From a0070809b2344266608de9f8c9ac5c8ce1c31a8c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 16 七月 2025 20:59:55 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into dev

---
 ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/GovernmentCloudTask.java |  254 +++++++++++++++++++++++++++++++++++---------------
 1 files changed, 177 insertions(+), 77 deletions(-)

diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/GovernmentCloudTask.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/GovernmentCloudTask.java
index ffadd44..7548617 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/GovernmentCloudTask.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/util/GovernmentCloudTask.java
@@ -1,26 +1,11 @@
 package com.ruoyi.jianguan.util;
 import com.ruoyi.account.api.factory.JianGuanAccountFallbackFactory;
 import com.ruoyi.account.api.feignClient.JianGuanAccountClient;
+import com.ruoyi.other.api.domain.*;
 import com.ruoyi.system.api.domain.SysRole;
 import com.ruoyi.system.api.domain.SysLoginLog;
 import com.ruoyi.system.api.domain.SysOperLog;
 import com.ruoyi.system.api.domain.SysUser;
-
-import com.ruoyi.other.api.domain.TEnterpriseUserApplication;
-import com.ruoyi.other.api.domain.THtml;
-import com.ruoyi.other.api.domain.TCoupon;
-import com.ruoyi.other.api.domain.TSystemConfiguration;
-import com.ruoyi.other.api.domain.TVip;
-import com.ruoyi.other.api.domain.Operator;
-import com.ruoyi.other.api.domain.TGoods;
-import com.ruoyi.other.api.domain.TInvoiceType;
-import com.ruoyi.other.api.domain.TIntegralRule;
-import com.ruoyi.other.api.domain.TActivity;
-import com.ruoyi.other.api.domain.TAdvertising;
-import com.ruoyi.other.api.domain.TCompany;
-import com.ruoyi.other.api.domain.TEvaluationTag;
-import com.ruoyi.other.api.domain.TNotice;
-import com.ruoyi.other.api.domain.TUserTag;
 
 import com.ruoyi.order.api.model.AccountingStrategyDetailOrder;
 import com.ruoyi.order.api.model.TOrderInvoice;
@@ -366,88 +351,125 @@
             List<TAccountingStrategy> accountingStrategies = data1.getAccountingStrategies();
             if (!accountingStrategies.isEmpty()) {
                 log.info("策略"+accountingStrategies.size());
-
-                accountingStrategyService.saveOrUpdateBatch(accountingStrategies);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < accountingStrategies.size(); i += 700) {
+                    accountingStrategyService.saveOrUpdateBatch(accountingStrategies.subList(i, Math.min(i + 700, accountingStrategies.size())));
+                }
             }
             List<TAccountingStrategyDetail> accountingStrategyDetails = data1.getAccountingStrategyDetails();
             if (!accountingStrategyDetails.isEmpty()) {
                 log.info("策略明细"+accountingStrategyDetails.size());
-
-                accountingStrategyDetailService.saveOrUpdateBatch(accountingStrategyDetails);
+                for (int i = 0; i < accountingStrategies.size(); i += 700) {
+                    accountingStrategyDetailService.saveOrUpdateBatch(accountingStrategyDetails.subList(i, Math.min(i + 700, accountingStrategyDetails.size())));
+                }
             }
             List<TApplyChargingPile> applyChargingPiles = data1.getApplyChargingPiles();
             if (!applyChargingPiles.isEmpty()) {
                 log.info("申请充电桩"+applyChargingPiles.size());
-
-                applyChargingPileService.saveOrUpdateBatch(applyChargingPiles);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < applyChargingPiles.size(); i += 700) {
+                    applyChargingPileService.saveOrUpdateBatch(applyChargingPiles.subList(i, Math.min(i + 700, applyChargingPiles.size())));
+                }
             }
             List<TCarport> carports = data1.getCarports();
             if (!carports.isEmpty()) {
                 log.info("停车场"+carports.size());
-
-                carportService.saveOrUpdateBatch(carports);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < carports.size(); i += 700) {
+                    carportService.saveOrUpdateBatch(carports.subList(i, Math.min(i + 700, carports.size())));
+                }
             }
             List<TChargingGun> chargingGuns = data1.getChargingGuns();
             if (!chargingGuns.isEmpty()) {
                 log.info("充电枪"+chargingGuns.size());
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < chargingGuns.size(); i += 700) {
+                    chargingGunService.saveOrUpdateBatch(chargingGuns.subList(i, Math.min(i + 700, chargingGuns.size())));
+                }
 
                 chargingGunService.saveOrUpdateBatch(chargingGuns);
             }
             List<TChargingPile> chargingPiles = data1.getChargingPiles();
             if (!chargingPiles.isEmpty()) {
                 log.info("充电桩"+chargingPiles.size());
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < chargingPiles.size(); i += 700) {
+                    chargingPileService.saveOrUpdateBatch(chargingPiles.subList(i, Math.min(i + 700, chargingPiles.size())));
+                }
 
-                chargingPileService.saveOrUpdateBatch(chargingPiles);
             }
             List<TChargingPileNotification> chargingPileNotifications = data1.getChargingPileNotifications();
             if (!chargingPileNotifications.isEmpty()) {
-                log.info("通知"+chargingPileNotifications.size());
-
-                chargingPileNotificationService.saveOrUpdateBatch(chargingPileNotifications);
+                log.info("充电桩通知"+chargingPileNotifications.size());
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < chargingPileNotifications.size(); i += 700) {
+                    chargingPileNotificationService.saveOrUpdateBatch(chargingPileNotifications.subList(i, Math.min(i + 700, chargingPileNotifications.size())));
+                }
             }
             List<TFaultMessage> faultMessages = data1.getFaultMessages();
             if (!faultMessages.isEmpty()) {
                 log.info("故障"+faultMessages.size());
-
-                faultMessageService.saveOrUpdateBatch(faultMessages);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < faultMessages.size(); i += 700) {
+                    faultMessageService.saveOrUpdateBatch(faultMessages.subList(i, Math.min(i + 700, faultMessages.size())));
+                }
             }
             List<TMonitoringEquipment> monitoringEquipments = data1.getMonitoringEquipments();
             if (!monitoringEquipments.isEmpty()) {
                 log.info("监控设备"+monitoringEquipments.size());
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < monitoringEquipments.size(); i += 700) {
+                    monitoringEquipmentService.saveOrUpdateBatch(monitoringEquipments.subList(i, Math.min(i + 700, monitoringEquipments.size())));
 
-                monitoringEquipmentService.saveOrUpdateBatch(monitoringEquipments);
+                }
             }
             List<TParkingLot> parkingLots = data1.getParkingLots();
             if (!parkingLots.isEmpty()) {
                 log.info("停车场"+parkingLots.size());
-
-                parkingLotService.saveOrUpdateBatch(parkingLots);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < parkingLots.size(); i += 700) {
+                    parkingLotService.saveOrUpdateBatch(parkingLots.subList(i, Math.min(i + 700, parkingLots.size())));
+                }
             }
             List<TParkingRecord> parkingRecords = data1.getParkingRecords();
             if (!parkingRecords.isEmpty()) {
                 log.info("停车记录"+parkingRecords.size());
-
-                parkingRecordService.saveOrUpdateBatch(parkingRecords);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < parkingRecords.size(); i += 700) {
+                    parkingRecordService.saveOrUpdateBatch(parkingRecords.subList(i, Math.min(i + 700, parkingRecords.size())));
+                }
             }
-//            List<TPartnerSite> partnerSites = data1.getPartnerSites();
-//            if (!partnerSites.isEmpty()) {
-//                partnerSiteService.saveOrUpdateBatch(partnerSites);
-//            }
+            List<TPartnerSite> partnerSites = data1.getPartnerSites();
+            if (partnerSites!=null&&!partnerSites.isEmpty()) {
+                log.info("合作商站点"+parkingRecords.size());
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < partnerSites.size(); i += 700) {
+                    partnerSiteService.saveOrUpdateBatch(partnerSites.subList(i, Math.min(i + 700, partnerSites.size())));
+                }
+            }
             List<TRepair> repairs = data1.getRepairs();
             if (!repairs.isEmpty()) {
                 log.info("报修"+repairs.size());
-
-                repairService.saveOrUpdateBatch(repairs);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < repairs.size(); i += 700) {
+                    repairService.saveOrUpdateBatch(repairs.subList(i, Math.min(i + 700, repairs.size())));
+                }
             }
-//            List<TSiteMenu> siteMenus = data1.getSiteMenus();
-//            if (!siteMenus.isEmpty()) {
-//                siteMenuService.saveOrUpdateBatch(siteMenus);
-//            }
+            List<TSiteMenu> siteMenus = data1.getSiteMenus();
+            if (siteMenus!=null&&!siteMenus.isEmpty()) {
+                log.info("站点菜单"+repairs.size());
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < siteMenus.size(); i += 700) {
+                    siteMenuService.saveOrUpdateBatch(siteMenus.subList(i, Math.min(i + 700, siteMenus.size())));
+                }
+            }
             List<TVehicleRamp> vehicleRamps = data1.getVehicleRamps();
             if (!vehicleRamps.isEmpty()) {
                 log.info("车道"+vehicleRamps.size());
-
-                vehicleRampService.saveOrUpdateBatch(vehicleRamps);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < vehicleRamps.size(); i += 700) {
+                    vehicleRampService.saveOrUpdateBatch(vehicleRamps.subList(i, Math.min(i + 700, vehicleRamps.size())));
+                }
             }
         }
         //order服务
@@ -457,110 +479,160 @@
             List<AccountingStrategyDetailOrder> accountingStrategyDetailOrders = data2.getAccountingStrategyDetailOrders();
             if (!accountingStrategyDetailOrders.isEmpty()) {
                 log.info("订单明细策略"+accountingStrategyDetailOrders.size());
-
-                accountingStrategyDetailOrderService.saveOrUpdateBatch(accountingStrategyDetailOrders);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < accountingStrategyDetailOrders.size(); i += 700) {
+                    accountingStrategyDetailOrderService.saveOrUpdateBatch(accountingStrategyDetailOrders.subList(i, Math.min(i + 700, accountingStrategyDetailOrders.size())));
+                }
             }
             List<AccountingStrategyOrder> accountingStrategyOrders = data2.getAccountingStrategyOrders();
             if (!accountingStrategyOrders.isEmpty()) {
                 log.info("订单策略"+accountingStrategyOrders.size());
-
-                accountingStrategyOrderService.saveOrUpdateBatch(accountingStrategyOrders);
+                // 分批插入数据 每次最多700条
+                int size = 700;
+                for (int i = 0; i < accountingStrategyOrders.size(); i += size) {
+                    List<AccountingStrategyOrder> subList = accountingStrategyOrders.subList(i, Math.min(i + size, accountingStrategyOrders.size()));
+                    accountingStrategyOrderService.saveOrUpdateBatch(subList);
+                }
             }
             List<TChargingBill> chargingBills = data2.getChargingBills();
             if (!chargingBills.isEmpty()) {
                 log.info("账单"+chargingBills.size());
+                // 分批插入数据 每次最多700条
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < chargingBills.size(); i += 700) {
+                    chargingBillService.saveOrUpdateBatch(chargingBills.subList(i, Math.min(i + 700, chargingBills.size())));
+                }
 
-                chargingBillService.saveOrUpdateBatch(chargingBills);
             }
             List<TChargingOrder> chargingOrders = data2.getChargingOrders();
             if (!chargingOrders.isEmpty()) {
                 log.info("充电订单"+chargingOrders.size());
-
-                chargingOrderService.saveOrUpdateBatch(chargingOrders);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < chargingOrders.size(); i += 700) {
+                    chargingOrderService.saveOrUpdateBatch(chargingOrders.subList(i, Math.min(i + 700, chargingOrders.size())));
+                }
             }
             List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = data2.getChargingOrderAccountingStrategies();
             if (!chargingOrderAccountingStrategies.isEmpty()) {
                 log.info("充电订单策略"+chargingOrderAccountingStrategies.size());
-
-                chargingOrderAccountingStrategyService.saveOrUpdateBatch(chargingOrderAccountingStrategies);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < chargingOrderAccountingStrategies.size(); i += 700) {
+                    chargingOrderAccountingStrategyService.saveOrUpdateBatch(chargingOrderAccountingStrategies.subList(i, Math.min(i + 700, chargingOrderAccountingStrategies.size())));
+                }
             }
             List<TChargingOrderRefund> chargingOrderRefunds = data2.getChargingOrderRefunds();
             if (!chargingOrderRefunds.isEmpty()) {
                 log.info("充电订单退款"+chargingOrderRefunds.size());
 
-                chargingOrderRefundService.saveOrUpdateBatch(chargingOrderRefunds);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < chargingOrderRefunds.size(); i += 700) {
+                    chargingOrderRefundService.saveOrUpdateBatch(chargingOrderRefunds.subList(i, Math.min(i + 700, chargingOrderRefunds.size())));
+                }
             }
             List<TExchangeOrder> exchangeOrders = data2.getExchangeOrders();
             if (!exchangeOrders.isEmpty()) {
                 log.info("兑换订单"+exchangeOrders.size());
 
-                exchangeOrderService.saveOrUpdateBatch(exchangeOrders);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < exchangeOrders.size(); i += 700) {
+                    exchangeOrderService.saveOrUpdateBatch(exchangeOrders.subList(i, Math.min(i + 700, exchangeOrders.size())));
+                }
             }
             List<TGrantVip> grantVips = data2.getGrantVips();
             if (!grantVips.isEmpty()) {
                 log.info("赠送vip"+grantVips.size());
 
-                grantVipService.saveOrUpdateBatch(grantVips);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < grantVips.size(); i += 700) {
+                    grantVipService.saveOrUpdateBatch(grantVips.subList(i, Math.min(i + 700, grantVips.size())));
+                }
             }
             List<TOrderAppeal> orderAppeals = data2.getOrderAppeals();
             if (!orderAppeals.isEmpty()) {
                 log.info("订单申诉"+orderAppeals.size());
 
-                orderAppealService.saveOrUpdateBatch(orderAppeals);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < orderAppeals.size(); i += 700) {
+                    orderAppealService.saveOrUpdateBatch(orderAppeals.subList(i, Math.min(i + 700, orderAppeals.size())));
+                }
             }
             List<TOrderEvaluate> orderEvaluates = data2.getOrderEvaluates();
             if (!orderEvaluates.isEmpty()) {
                 log.info("订单评价"+orderEvaluates.size());
 
-                orderEvaluateService.saveOrUpdateBatch(orderEvaluates);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < orderEvaluates.size(); i += 700) {
+                    orderEvaluateService.saveOrUpdateBatch(orderEvaluates.subList(i, Math.min(i + 700, orderEvaluates.size())));
+                }
             }
             List<TOrderEvaluateTag> orderEvaluateTags = data2.getOrderEvaluateTags();
             if (!orderEvaluateTags.isEmpty()) {
                 log.info("订单评价标签"+orderEvaluateTags.size());
-
-                orderEvaluateTagService.saveOrUpdateBatch(orderEvaluateTags);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < orderEvaluateTags.size(); i += 700) {
+                    orderEvaluateTagService.saveOrUpdateBatch(orderEvaluateTags.subList(i, Math.min(i + 700, orderEvaluateTags.size())));
+                }
             }
             List<TOrderInvoice> orderInvoices = data2.getOrderInvoices();
             if (!orderInvoices.isEmpty()) {
                 log.info("订单开票"+orderInvoices.size());
 
-                orderInvoiceService.saveOrUpdateBatch(orderInvoices);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < orderInvoices.size(); i += 700) {
+                    orderInvoiceService.saveOrUpdateBatch(orderInvoices.subList(i, Math.min(i + 700, orderInvoices.size())));
+                }
             }
             List<TOrderInvoiceDetail> orderInvoiceDetails = data2.getOrderInvoiceDetails();
             if (!orderInvoiceDetails.isEmpty()) {
                 log.info("订单开票明细"+orderInvoiceDetails.size());
-
-                orderInvoiceDetailService.saveOrUpdateBatch(orderInvoiceDetails);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < orderInvoiceDetails.size(); i += 700) {
+                    orderInvoiceDetailService.saveOrUpdateBatch(orderInvoiceDetails.subList(i, Math.min(i + 700, orderInvoiceDetails.size())));
+                }
             }
             List<TSettlementConfirm> settlementConfirms = data2.getSettlementConfirms();
             if (!settlementConfirms.isEmpty()) {
                 log.info("账单结算"+settlementConfirms.size());
 
-                settlementConfirmService.saveOrUpdateBatch(settlementConfirms);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < settlementConfirms.size(); i += 700) {
+                    settlementConfirmService.saveOrUpdateBatch(settlementConfirms.subList(i, Math.min(i + 700, settlementConfirms.size())));
+                }
             }
             List<TShoppingOrder> shoppingOrders = data2.getShoppingOrders();
             if (!shoppingOrders.isEmpty()) {
                 log.info("购物订单"+shoppingOrders.size());
 
-                shoppingOrderService.saveOrUpdateBatch(shoppingOrders);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < shoppingOrders.size(); i += 700) {
+                    shoppingOrderService.saveOrUpdateBatch(shoppingOrders.subList(i, Math.min(i + 700, shoppingOrders.size())));
+                }
             }
             List<TShoppingOrderRefund> shoppingOrderRefunds = data2.getShoppingOrderRefunds();
             if (!shoppingOrderRefunds.isEmpty()) {
                 log.info("购物订单退款"+shoppingOrderRefunds.size());
-
-                shoppingOrderRefundService.saveOrUpdateBatch(shoppingOrderRefunds);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < shoppingOrderRefunds.size(); i += 700) {
+                    shoppingOrderRefundService.saveOrUpdateBatch(shoppingOrderRefunds.subList(i, Math.min(i + 700, shoppingOrderRefunds.size())));
+                }
             }
             List<TVipOrder> vipOrders = data2.getVipOrders();
             if (!vipOrders.isEmpty()) {
                 log.info("会员订单"+vipOrders.size());
 
-                vipOrderService.saveOrUpdateBatch(vipOrders);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < vipOrders.size(); i += 700) {
+                    vipOrderService.saveOrUpdateBatch(vipOrders.subList(i, Math.min(i + 700, vipOrders.size())));
+                }
             }
             List<TVipOrderRefund> vipOrderRefunds = data2.getVipOrderRefunds();
             if (!vipOrderRefunds.isEmpty()) {
                 log.info("会员订单退款"+vipOrderRefunds);
 
-                vipOrderRefundService.saveOrUpdateBatch(vipOrderRefunds);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < vipOrderRefunds.size(); i += 700) {
+                    vipOrderRefundService.saveOrUpdateBatch(vipOrderRefunds.subList(i, Math.min(i + 700, vipOrderRefunds.size())));
+                }
             }
         }
         // other服务
@@ -637,8 +709,10 @@
             List<TNotice> notices = data3.getNotices();
             if (!notices.isEmpty()) {
                 log.info("通知"+notices.size());
-
-                noticeService.saveOrUpdateBatch(notices);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < notices.size(); i += 700) {
+                    noticeService.saveOrUpdateBatch(notices.subList(i, Math.min(i + 700, notices.size())));
+                }
             }
             List<TSystemConfiguration> systemConfigurations = data3.getSystemConfigurations();
             if (!systemConfigurations.isEmpty()) {
@@ -650,13 +724,33 @@
             if (!userTags.isEmpty()) {
                 log.info("用户标签"+userTags.size());
 
-                userTagService.saveOrUpdateBatch(userTags);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < userTags.size(); i += 700) {
+                    userTagService.saveOrUpdateBatch(userTags.subList(i, Math.min(i + 700, userTags.size())));
+                }
             }
             List<TVip> vips = data3.getVips();
             if (!vips.isEmpty()) {
                 log.info("会员"+vips.size());
 
                 vipService.saveOrUpdateBatch(vips);
+            }
+            List<TUserSite> userSites = data3.getUserSites();
+            if (userSites!=null&&!userSites.isEmpty()) {
+                log.info("用户站点"+userSites.size());
+
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < userTags.size(); i += 700) {
+                    userSiteService.saveOrUpdateBatch(userSites.subList(i, Math.min(i + 700, userSites.size())));
+                }
+            }
+            List<TRoleSite> roleSites = data3.getRoleSites();
+            if (roleSites!=null&&!userSites.isEmpty()) {
+                log.info("角色站点"+userSites.size());
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < roleSites.size(); i += 700) {
+                    roleSiteService.saveOrUpdateBatch(roleSites.subList(i, Math.min(i + 700, roleSites.size())));
+                }
             }
         }
         GovernmentCloudSystemVO data4 = jianGuanSystemClient.listAll().getData();
@@ -667,13 +761,19 @@
             if (!loginLogs.isEmpty()) {
                 log.info("登录日志"+loginLogs.size());
 
-                sysLoginLogService.saveOrUpdateBatch(loginLogs);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < loginLogs.size(); i += 700) {
+                    sysLoginLogService.saveOrUpdateBatch(loginLogs.subList(i, Math.min(i + 700, loginLogs.size())));
+                }
             }
             List<SysOperLog> sysOperLogs = data4.getSysOperLogs();
             if (!sysOperLogs.isEmpty()) {
                 log.info("操作日志"+sysOperLogs.size());
 
-                sysOperLogService.saveOrUpdateBatch(sysOperLogs);
+                // 分批插入数据 每次最多700条
+                for (int i = 0; i < sysOperLogs.size(); i += 700) {
+                    sysOperLogService.saveOrUpdateBatch(sysOperLogs.subList(i, Math.min(i + 700, sysOperLogs.size())));
+                }
             }
             List<SysRole> sysRoles = data4.getSysRoles();
             if (!sysRoles.isEmpty()) {

--
Gitblit v1.7.1