From 739350166a8690768738ef59cefec2d4010489b6 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期六, 26 十月 2024 09:09:23 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                        |   19 +++-
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml                           |    3 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/ChargingHandshakeServiceImpl.java |   12 +++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java              |   54 +++++++------
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java            |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java                             |   13 +-
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java          |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java                                            |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java  |   55 +++++++++----
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/ChargingBillExport.java                                     |    6 -
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                           |    1 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java           |   35 +++++---
 12 files changed, 127 insertions(+), 79 deletions(-)

diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
index d7272a4..89d4819 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -4,16 +4,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.chargingPile.api.dto.CheckChargingStrategyDTO;
-import com.ruoyi.chargingPile.api.model.Site;
-import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
-import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
-import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.chargingPile.api.model.*;
 import com.ruoyi.chargingPile.api.vo.StrategyPriceVO;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
-import com.ruoyi.chargingPile.service.ISiteService;
-import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
-import com.ruoyi.chargingPile.service.TAccountingStrategyService;
-import com.ruoyi.chargingPile.service.TChargingPileService;
+import com.ruoyi.chargingPile.service.*;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.web.domain.AjaxResult;
@@ -40,13 +34,15 @@
 
     private final ISiteService siteService;
     private final TChargingPileService chargingPileService;
+    private final TChargingGunService chargingGunService;
     private final TAccountingStrategyService accountingStrategyService;
     private final TAccountingStrategyDetailService accountingStrategyDetailService;
 
     @Autowired
-    public TAccountingStrategyDetailController(ISiteService siteService, TChargingPileService chargingPileService, TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
+    public TAccountingStrategyDetailController(ISiteService siteService, TChargingPileService chargingPileService, TChargingGunService chargingGunService, TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
         this.siteService = siteService;
         this.chargingPileService = chargingPileService;
+        this.chargingGunService = chargingGunService;
         this.accountingStrategyService = accountingStrategyService;
         this.accountingStrategyDetailService = accountingStrategyDetailService;
     }
@@ -123,11 +119,22 @@
         if(Objects.isNull(chargingPile)){
             return R.fail("未查询到该桩设备");
         }
-        Site site = siteService.getById(chargingPile.getSiteId());
-        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
-        TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
-                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
-                .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
+        TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
+                .eq(TChargingGun::getChargingPileId, chargingPile.getId())
+                .last("LIMIT 1"));
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(chargingGun.getAccountingStrategyId());
+        TAccountingStrategyDetail one;
+        if(Objects.nonNull(accountingStrategy)){
+            one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
+                    .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
+        }else {
+            Site site = siteService.getById(chargingPile.getSiteId());
+            accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
+            one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
+                    .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
+        }
         return R.ok(one);
     }
     /**
@@ -178,11 +185,21 @@
         if(Objects.isNull(chargingPile)){
             return R.fail("未查询到该桩设备");
         }
-        Site site = siteService.getById(chargingPile.getSiteId());
-        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
-        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
-                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
-        return R.ok(accountingStrategyDetails);
+        TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
+                .eq(TChargingGun::getChargingPileId, chargingPile.getId())
+                .last("LIMIT 1"));
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(chargingGun.getAccountingStrategyId());
+        if(Objects.nonNull(accountingStrategy)){
+            List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
+            return R.ok(accountingStrategyDetails);
+        }else {
+            Site site = siteService.getById(chargingPile.getSiteId());
+            accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
+            List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
+            return R.ok(accountingStrategyDetails);
+        }
     }
 }
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
index e90a7ce..ff411ec 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -60,10 +60,10 @@
 
     private final TChargingPileService chargingPileService;
     private final TChargingGunService chargingGunService;
-	
+
 	@Resource
 	private RedisService redisService;
-	
+
 	@Resource
 	private TFaultMessageService faultMessageService;
 
@@ -113,7 +113,7 @@
 		return R.ok(chargingPileService.list(Wrappers.lambdaQuery(TChargingPile.class)
 				.in(!siteIds.isEmpty(),TChargingPile::getSiteId,siteIds)));
 	}
-	
+
 	@ResponseBody
 	@GetMapping("/pageChargingPileList")
 	@ApiOperation(value = "获取充电桩列表数据", tags = {"管理后台-充电桩信息"})
@@ -121,7 +121,7 @@
 		PageInfo<PageChargingPileListDTO> list = chargingPileService.pageChargingPileList(page);
 		return AjaxResult.success(list);
 	}
-	
+
 	@ResponseBody
 	@Log(title = "【充电桩信息】添加充电桩数据", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE)
 	@PostMapping("/addChargingPile")
@@ -129,8 +129,8 @@
 	public AjaxResult addChargingPile(@RequestBody TChargingPile chargingPile){
 		return chargingPileService.addChargingPile(chargingPile);
 	}
-	
-	
+
+
 	@ResponseBody
 	@GetMapping("/getChargingPile/{id}")
 	@ApiOperation(value = "获取充电桩详情数据", tags = {"管理后台-充电桩信息"})
@@ -138,8 +138,8 @@
 		TChargingPile chargingPile = chargingPileService.getChargingPile(id);
 		return AjaxResult.success(chargingPile);
 	}
-	
-	
+
+
 	@ResponseBody
 	@Log(title = "【充电桩信息】编辑充电桩数据", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
 	@PostMapping("/editChargingPile")
@@ -147,9 +147,9 @@
 	public AjaxResult editChargingPile(@RequestBody TChargingPile chargingPile){
 		return chargingPileService.editChargingPile(chargingPile);
 	}
-	
-	
-	
+
+
+
 	@ResponseBody
 	@DeleteMapping("/delChargingPile")
 	@Log(title = "【充电桩信息】删除充电桩", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
@@ -160,8 +160,8 @@
 	public AjaxResult delChargingPile(@RequestParam("id") Integer[] id){
 		return chargingPileService.delChargingPile(id);
 	}
-	
-	
+
+
 	@ResponseBody
 	@Log(title = "【充电桩信息】批量设置计费策略", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
 	@PostMapping("/batchSetAccountingStrategy")
@@ -170,8 +170,8 @@
 		chargingPileService.batchSetAccountingStrategy(setAccountingStrategy);
 		return AjaxResult.success();
 	}
-	
-	
+
+
 	@ResponseBody
 	@GetMapping("/chargeMonitoring/{siteId}")
 	@ApiOperation(value = "获取充电设施监控数据", tags = {"管理后台-充电设备监控"})
@@ -188,8 +188,8 @@
 		ChargingGunCountMonitoring chargingGunCountMonitoring = chargingPileService.getChargingGunCountMonitoring(siteId);
 		return AjaxResult.success(chargingGunCountMonitoring);
 	}
-	
-	
+
+
 	@ResponseBody
 	@GetMapping("/getChargingGunMonitoring")
 	@ApiOperation(value = "获取充电枪监控数据", tags = {"管理后台-充电设备监控"})
@@ -197,8 +197,8 @@
 		PageInfo<ChargingGunMonitoring> chargingGunMonitoring = chargingPileService.getChargingGunMonitoring(query);
 		return AjaxResult.success(chargingGunMonitoring);
 	}
-	
-	
+
+
 	/**
 	 * 根据id获取充电桩信息
 	 * @param id
@@ -210,8 +210,8 @@
 		TChargingPile chargingPile = chargingPileService.getById(id);
 		return R.ok(chargingPile);
 	}
-	
-	
+
+
 	/**
 	 * 更新充电桩状态
 	 * @param code
@@ -223,7 +223,8 @@
 		TChargingPile chargingPile = chargingPileService.getOne(new LambdaQueryWrapper<TChargingPile>()
 				.eq(TChargingPile::getCode, code).eq(TChargingPile::getDelFlag, 0));
 		if(null != chargingPile){
-			if(chargingPile.getStatus() == 1){
+			//充电桩正常,返回异常,处理充电桩状态和添加故障记录
+			if(chargingPile.getStatus() == 1 && 1 == status){
 				TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, chargingPile.getId())
 						.eq(TFaultMessage::getStatus, 2).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime));
 				if(null == faultMessage){
@@ -236,7 +237,7 @@
 					faultMessage.setDelFlag(false);
 					faultMessage.setContent("设备故障");
 					faultMessageService.save(faultMessage);
-					
+
 					chargingPile.setStatus(0 == status ? 1 : 3);
 					chargingPileService.updateById(chargingPile);
 				}
@@ -248,9 +249,14 @@
 					one.setEndTime(LocalDateTime.now());
 					faultMessageService.updateById(one);
 				}
+
+				chargingPile.setStatus(0 == status ? 1 : 3);
+				chargingPileService.updateById(chargingPile);
 			}
 			if(0 == status){
-				redisService.getCacheMap("charging_pile_online").put(code, System.currentTimeMillis());
+				Map<String, Object> charging_pile_online = redisService.getCacheMap("charging_pile_online");
+				charging_pile_online.put(code, System.currentTimeMillis());
+				redisService.setCacheMap("charging_pile_online", charging_pile_online);
 			}
 		}
 	}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
index 437fb00..640d886 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -27,6 +27,7 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.integration.api.feignClient.IntegrationClient;
 import com.ruoyi.integration.api.feignClient.IotInterfaceClient;
 import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
@@ -106,6 +107,9 @@
 	
 	@Resource
 	private TFaultMessageService faultMessageService;
+	
+	@Resource
+	private IntegrationClient integrationClient;
 	
 	
 	
@@ -284,6 +288,11 @@
 			tChargingGun.setAccountingStrategyId(setAccountingStrategy.getAccountingStrategyId());
 		}
 		chargingGunService.updateBatchById(list);
+		//下发硬件更新计费模板
+		for (TChargingPile chargingPile : this.listByIds(id)) {
+			integrationClient.setupBillingModel1(chargingPile.getCode());
+		}
+		
 	}
 
 	@Override
@@ -589,20 +598,18 @@
 		
 		if(datas.size() > 0){
 			for (TChargingPile data : datas) {
-				if(data.getStatus() == 1){
-					TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, data.getId())
-							.eq(TFaultMessage::getStatus, 1).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime));
-					if(null == faultMessage){
-						faultMessage = new TFaultMessage();
-						faultMessage.setSiteId(data.getSiteId());
-						faultMessage.setChargingPileId(data.getId());
-						faultMessage.setStatus(1);
-						faultMessage.setDownTime(LocalDateTime.now());
-						faultMessage.setCreateTime(LocalDateTime.now());
-						faultMessage.setDelFlag(false);
-						faultMessage.setContent("设备离线");
-						faultMessageService.save(faultMessage);
-					}
+				TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, data.getId())
+						.eq(TFaultMessage::getStatus, 1).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime));
+				if(null == faultMessage){
+					faultMessage = new TFaultMessage();
+					faultMessage.setSiteId(data.getSiteId());
+					faultMessage.setChargingPileId(data.getId());
+					faultMessage.setStatus(1);
+					faultMessage.setDownTime(LocalDateTime.now());
+					faultMessage.setCreateTime(LocalDateTime.now());
+					faultMessage.setDelFlag(false);
+					faultMessage.setContent("设备离线");
+					faultMessageService.save(faultMessage);
 				}
 			}
 			this.updateBatchById(datas);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
index 3cb2293..e88746d 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
@@ -79,8 +79,7 @@
             </if>
             AND status = 3
         </where>
-        group by create_time
-        ORDER BY create_time DESC
+
     </select>
     <select id="parkingData" resultType="java.util.Map">
         SELECT
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java
index 844d62e..8807522 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java
@@ -29,7 +29,7 @@
 	 */
 	@PostMapping("/getDataByOrderCode")
 	public R<ChargingHandshake> getDataByOrderCode(@RequestParam("code") String code){
-		ChargingHandshake chargingHandshake = chargingHandshakeService.findById(code);
+		ChargingHandshake chargingHandshake = chargingHandshakeService.getDataByOrderCode(code);
 		return R.ok(chargingHandshake);
 	}
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java
index 11c7824..e37ba16 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java
@@ -4,6 +4,8 @@
 import com.ruoyi.integration.mongodb.base.BaseService;
 
 public interface ChargingHandshakeService extends BaseService<ChargingHandshake> {
-
+	
+	
+	ChargingHandshake getDataByOrderCode(String code);
 
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/ChargingHandshakeServiceImpl.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/ChargingHandshakeServiceImpl.java
index 00ef612..1d55331 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/ChargingHandshakeServiceImpl.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/ChargingHandshakeServiceImpl.java
@@ -5,8 +5,14 @@
 import com.ruoyi.integration.mongodb.service.ChargingHandshakeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 @Service
@@ -28,4 +34,10 @@
     public List<ChargingHandshake> findAll() {
         return mongoTemplate.findAll(ChargingHandshake.class);
     }
+    
+    @Override
+    public ChargingHandshake getDataByOrderCode(String code) {
+        List<ChargingHandshake> charging_gun_code = mongoTemplate.find(new Query().addCriteria(Criteria.where("transaction_serial_number").is(code)), ChargingHandshake.class);
+        return charging_gun_code.size() > 0 ? charging_gun_code.get(0) : null;
+    }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
index c1b037f..6730597 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -245,14 +245,12 @@
         chargingBillExport.setCode(byId.getCode());
         chargingBillExport.setAccountType("微信商户");
         chargingBillExport.setType(byId.getType().toString());
-        chargingBillExport.setBillType("月账单");
         LocalDateTime billTime = byId.getBillTime();
         // 将billTime 减去一个月 转化为yyyy-MM格式字符串
         billTime = billTime.minusMonths(1);
         chargingBillExport.setBillWeek(DateUtils.parseDateToStr("yyyy-MM",DateUtils.toDate(billTime)));
 
         chargingBillExport.setBillTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(billTime)));
-        chargingBillExport.setState("未出账");
         List<Site> data = siteClient.getSiteByIds(Arrays.asList(byId.getSiteId())).getData();
         if (!data.isEmpty()){
             chargingBillExport.setSiteName(data.get(0).getName());
@@ -316,11 +314,11 @@
                     chargingBillPayExport.setPlatformPay("支付宝小程序支付");
 
             }
-            TChargingOrderRefund one = tChargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId()).one();
-            if (one!=null){
-                chargingBillRefundExport.setRechargeSerialNumber(one.getSerailNumber());
-                chargingBillRefundExport.setCode(one.getCode());
-                chargingBillRefundExport.setPayTime(tChargingOrder.getPayTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getPayTime())):"");
+            List<TChargingOrderRefund> one1 = tChargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId()).list();
+            for (TChargingOrderRefund one : one1) {
+                chargingBillRefundExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber());
+                chargingBillRefundExport.setCode(tChargingOrder.getCode());
+                chargingBillRefundExport.setPayTime(tChargingOrder.getCreateTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getCreateTime())):"");
                 if (tChargingOrder.getRefundTime()!=null){
                     chargingBillRefundExport.setRefundTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getRefundTime())));
                 }
@@ -330,6 +328,7 @@
                 chargingBillRefundExport.setRefundSerialNumber(one.getRefundSerialNumber());
                 chargingBillRefundExports.add(chargingBillRefundExport);
             }
+
             // 支付信息
             chargingBillPayExport.setId(i+"");
             chargingBillPayExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber());
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index a66da4c..0100bb5 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -813,6 +813,7 @@
             ChargingOrderAndUploadRealTimeMonitoringDataDto dataDto = new ChargingOrderAndUploadRealTimeMonitoringDataDto();
             BeanUtils.copyProperties(uploadRealTimeMonitoringData,dataDto);
             ChargingOrderQuery dto = new ChargingOrderQuery();
+            dto.setCode(uploadRealTimeMonitoringData.getTransaction_serial_number());
             TCharingOrderVO vo = chargingOrderService.chargingOrder(dto);
             if (!vo.getList().getRecords().isEmpty()) {
                 ChargingOrderVO chargingOrderVO = vo.getList().getRecords().get(0);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/ChargingBillExport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/ChargingBillExport.java
index 3c826b2..44efc03 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/ChargingBillExport.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/ChargingBillExport.java
@@ -17,14 +17,12 @@
     private String accountType;
     @Excel(name = "账单分类",width = 30,replace = {"全站账单_1","各个站点账单_2"})
     private String type;
-    @Excel(name = "账单类型",width = 30)
-    private String billType;
+
     @Excel(name  = "账单周期",width = 30 )
     private String billWeek;
     @Excel(name  = "账单生成日期",width = 30)
     private String billTime;
-    @Excel(name  = "状态",width = 30)
-    private String state;
+
     @Excel(name  = "站点名称",width = 30)
     private String siteName;
     @Excel(name  = "支付金额",width = 30)
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 9a17619..923d807 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
@@ -539,6 +539,7 @@
 		chargingOrder.setRechargePaymentStatus(2);
 		chargingOrder.setRechargeSerialNumber(transaction_id);
 		chargingOrder.setStatus(2);
+		chargingOrder.setPayTime(LocalDateTime.now());
 
 		//添加安全检测数据到缓存中,每步安全检测完成后需要更新缓存数据
 		PreChargeCheck preChargeCheck = new PreChargeCheck();
@@ -608,12 +609,16 @@
 						if(times > m){
 							//充电时间跨度两个计费策略,需要继续对下一个策略进行计算
 							serviceCharge = s_server_amount.multiply(new BigDecimal(m));
-							discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
 							rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m)));
+							if(null != discount){
+								discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
+							}
 							nowTimeMillis = null;
 						}else{
 							serviceCharge = s_server_amount.multiply(new BigDecimal(times));
-							discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
+							if(null != discount){
+								discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
+							}
 							break;
 						}
 					}
@@ -792,8 +797,11 @@
 		one.setRefundStatus(2);
 		one.setRefundTime(LocalDateTime.now());
 		chargingOrderRefundService.updateById(one);
+		
 		TChargingOrder chargingOrder = this.getById(one.getChargingOrderId());
-		chargingOrder.setPayTime(LocalDateTime.now());
+		chargingOrder.setRefundStatus(2);
+		chargingOrder.setRefundSerialNumber(refund_id);
+		chargingOrder.setRefundTime(LocalDateTime.now());
 		this.updateById(chargingOrder);
 		return AjaxResult.success();
 	}
@@ -836,6 +844,7 @@
 			Integer m = Integer.valueOf(data.getCumulative_charging_time() % 60);
 			chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m));
 		}
+		//转换成UTC时间
 		ChargingHandshake chargingHandshake = chargingHandshakeClient.getDataByOrderCode(one.getCode()).getData();
 		if(null != chargingHandshake && null != data && null != one.getAppUserCarId()){
 			BigDecimal bms_battery_capacity = chargingHandshake.getBms_battery_capacity();
@@ -1963,8 +1972,6 @@
 					SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
 					AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
 					if(success.isSuccess()){
-						chargingOrder.setPayTime(LocalDateTime.now());
-						this.updateById(chargingOrder);
 						chargingOrderRefundService.save(chargingOrderRefund);
 					}
 				}
@@ -2556,7 +2563,7 @@
 			tSettlementConfirm.setIncomePercentage(0+"%");
 			tSettlementConfirm.setIncomePercentage(0+"%");
 		}else{
-			BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+			BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
 			tSettlementConfirm.setIncomePercentage(subtract+"%");
 			tSettlementConfirm.setIncomePercentage(subtract+"%");
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
index 37f8bac..dd63798 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -128,7 +128,7 @@
                 tChargingBill3.setType(2);
                 tChargingBill3.setSiteId(collect.get(i));
                 tChargingBill3.setBillTime(LocalDateTime.now());
-                tChargingBill3.setBillType(1);
+                tChargingBill3.setBillType(2);
                 tChargingBill3.setStatus(1);
                 tChargingBill3.setOrderState(2);
                 tChargingBills1.add(tChargingBill3);

--
Gitblit v1.7.1