From b3bf3ffc39e813adc9aa4f533abb9edc4cee6e50 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 22 七月 2026 16:15:49 +0800
Subject: [PATCH] fix: handle next P2 bug batch
---
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java | 24 ++++++++
ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImplTest.java | 20 ++++++
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java | 18 +++---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 21 +++++-
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/EnterpriseChargingDetailExport.java | 18 ++++++
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 24 ++++++++
6 files changed, 111 insertions(+), 14 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index db131f6..a8c3518 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -548,11 +548,13 @@
data1.addAll(data);
}
Set<Integer> siteIds = new HashSet<>(data1);
- List<Site> data = siteClient.getSiteByIds(siteIds.stream().collect(Collectors.toList())).getData();
- if (null != data) {
- List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList());
- sysUser.setSiteNames(siteNames);
- sysUser.setSiteIds(data.stream().map(Site::getId).collect(Collectors.toList()));
+ if (!applyAllSitePermission(sysUser, siteIds)) {
+ List<Site> data = siteClient.getSiteByIds(new ArrayList<>(siteIds)).getData();
+ if (null != data) {
+ List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList());
+ sysUser.setSiteNames(siteNames);
+ sysUser.setSiteIds(data.stream().map(Site::getId).collect(Collectors.toList()));
+ }
}
List<String> roleNames = new ArrayList<>();
for (SysUserRole sysUserRole : list1) {
@@ -565,6 +567,15 @@
}
return pageInfo.setRecords(list);
}
+
+ static boolean applyAllSitePermission(SysUser sysUser, Set<Integer> siteIds) {
+ if (!siteIds.contains(0)) {
+ return false;
+ }
+ sysUser.setSiteNames(Collections.singletonList("全部"));
+ sysUser.setSiteIds(Collections.singletonList(0));
+ return true;
+ }
@Override
public PageInfo<SysUser> getAllList(PageInfo<SysUser> pageInfo, List<Integer> collect) {
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
index 3f1b944..cbedc24 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
@@ -235,15 +235,7 @@
throw new RuntimeException(r.getMsg());
}
}else{
- user.setPhonenumber(partner.getPhoneOne());
- user.setUserName(partner.getAccount());
- user.setNickName(partner.getName());
- user.setAvatar(partner.getLogoUrl());
- if(StringUtils.isNotEmpty(partner.getPassword())){
- user.setPassword(partner.getPassword());
- user.setPassWordUpdate(new Date());
- }
- user.setRoleId(partner.getRoleId().longValue());
+ prepareExistingUserForUpdate(user, partner);
R r = sysUserClient.updateSysUser(user);
if(200 != r.getCode()){
throw new RuntimeException(r.getMsg());
@@ -256,6 +248,14 @@
return AjaxResult.success();
}
+ void prepareExistingUserForUpdate(SysUser user, Partner partner) {
+ user.setPhonenumber(partner.getPhoneOne());
+ user.setUserName(partner.getAccount());
+ user.setNickName(partner.getName());
+ user.setAvatar(partner.getLogoUrl());
+ user.setRoleId(partner.getRoleId().longValue());
+ }
+
void updateShareRatios(Partner partner) {
this.update(new UpdateWrapper<Partner>()
.eq("id", partner.getId())
diff --git a/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImplTest.java b/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImplTest.java
index f179f0b..f3bb31f 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImplTest.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImplTest.java
@@ -2,6 +2,7 @@
import com.ruoyi.chargingPile.api.model.Partner;
import com.ruoyi.chargingPile.mapper.PartnerMapper;
+import com.ruoyi.system.api.domain.SysUser;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.junit.jupiter.api.Test;
@@ -21,6 +22,25 @@
class PartnerServiceImplTest {
@Test
+ void editingPartnerDoesNotReplaceExistingLoginPasswordHash() {
+ PartnerServiceImpl service = new PartnerServiceImpl();
+ Partner partner = new Partner();
+ partner.setAccount("partner-user");
+ partner.setName("合作商A");
+ partner.setPhoneOne("13800000000");
+ partner.setLogoUrl("logo.jpg");
+ partner.setRoleId(9);
+ SysUser user = new SysUser();
+ user.setPassword("$2a$10$existing-bcrypt-hash");
+
+ service.prepareExistingUserForUpdate(user, partner);
+
+ assertEquals("$2a$10$existing-bcrypt-hash", user.getPassword());
+ assertEquals("partner-user", user.getUserName());
+ assertEquals(Long.valueOf(9), user.getRoleId());
+ }
+
+ @Test
void acceptsShareRatioWithoutIcbcSubMerchantConfiguration() {
Partner partner = new Partner();
partner.setId(1);
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 8970399..702f554 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
@@ -282,9 +282,33 @@
export.setOrderSource(formatOrderSource(dto.getOrderSource()));
export.setStartTime(dto.getStartTime() == null ? null : DateUtils.localDateTimeToString(dto.getStartTime()));
export.setEndTime(dto.getEndTime() == null ? null : DateUtils.localDateTimeToString(dto.getEndTime()));
+ export.setLicensePlate(dto.getLicensePlate());
+ export.setChargingCapacity(dto.getChargingCapacity());
+ export.setElectrovalence(dto.getElectrovalence());
+ export.setServiceCharge(dto.getServiceCharge());
+ export.setEndMode(formatChargingEndMode(dto.getEndMode()));
+ export.setPeriodCount(dto.getPeriodCount());
return export;
}
+ private String formatChargingEndMode(Integer endMode) {
+ if (endMode == null) {
+ return "-";
+ }
+ switch (endMode) {
+ case 0:
+ return "异常终止";
+ case 1:
+ return "主动终止";
+ case 2:
+ return "满电终止";
+ case 3:
+ return "费用不足终止";
+ default:
+ return "-";
+ }
+ }
+
private String formatEnterpriseOrderType(Integer type) {
if (type == null) {
return "-";
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/EnterpriseChargingDetailExport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/EnterpriseChargingDetailExport.java
index b3b6401..4297e66 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/EnterpriseChargingDetailExport.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/EnterpriseChargingDetailExport.java
@@ -59,4 +59,22 @@
@Excel(name = "最后时间", width = 30)
private String endTime;
+
+ @Excel(name = "车牌号", width = 20)
+ private String licensePlate;
+
+ @Excel(name = "累计充电量", width = 20, numFormat = "0.0000")
+ private BigDecimal chargingCapacity;
+
+ @Excel(name = "累计电费", width = 20, numFormat = "0.0000")
+ private BigDecimal electrovalence;
+
+ @Excel(name = "累计服务费", width = 20, numFormat = "0.0000")
+ private BigDecimal serviceCharge;
+
+ @Excel(name = "结束原因", width = 20)
+ private String endMode;
+
+ @Excel(name = "时段数", width = 15)
+ private Integer periodCount;
}
diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java
index 41c729d..47a58bf 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java
+++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java
@@ -4,11 +4,14 @@
import com.ruoyi.order.api.query.ChargingOrderQuery;
import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.dto.SixChargingDto;
+import com.ruoyi.order.dto.EnterpriseChargingDetailVO;
+import com.ruoyi.order.export.EnterpriseChargingDetailExport;
import com.ruoyi.order.service.TChargingOrderService;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
import java.time.LocalDate;
+import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
@@ -23,6 +26,27 @@
class TChargingOrderControllerTest {
@Test
+ void enterpriseChargingDetailExportContainsVisibleDetailColumns() {
+ EnterpriseChargingDetailVO detail = new EnterpriseChargingDetailVO();
+ detail.setLicensePlate("川JD20960");
+ detail.setChargingCapacity(new BigDecimal("40.693"));
+ detail.setElectrovalence(new BigDecimal("43.0857"));
+ detail.setServiceCharge(new BigDecimal("16.2772"));
+ detail.setEndMode(0);
+ detail.setPeriodCount(1);
+
+ EnterpriseChargingDetailExport export = ReflectionTestUtils.invokeMethod(
+ new TChargingOrderController(), "buildEnterpriseChargingDetailExport", detail);
+
+ assertEquals("川JD20960", export.getLicensePlate());
+ assertEquals(new BigDecimal("40.693"), export.getChargingCapacity());
+ assertEquals(new BigDecimal("43.0857"), export.getElectrovalence());
+ assertEquals(new BigDecimal("16.2772"), export.getServiceCharge());
+ assertEquals("异常终止", export.getEndMode());
+ assertEquals(1, export.getPeriodCount());
+ }
+
+ @Test
void latestAdjacentMonthDataMovesTheSixMonthWindowForward() {
SixChargingDto june = new SixChargingDto();
june.setMonth("06");
--
Gitblit v1.7.1