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) { 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()) 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); 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 "-"; 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; } 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");