package com.ruoyi.jianguan.util;
|
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;
|
import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
|
import com.ruoyi.order.api.model.TExchangeOrder;
|
import com.ruoyi.order.api.model.TOrderEvaluate;
|
import com.ruoyi.order.api.model.TSettlementConfirm;
|
import com.ruoyi.order.api.model.TVipOrder;
|
import com.ruoyi.order.api.model.TVipOrderRefund;
|
import com.ruoyi.order.api.model.AccountingStrategyOrder;
|
import com.ruoyi.order.api.model.TOrderInvoiceDetail;
|
import com.ruoyi.order.api.model.TChargingOrder;
|
import com.ruoyi.order.api.model.TChargingOrderRefund;
|
import com.ruoyi.order.api.model.TGrantVip;
|
import com.ruoyi.order.api.model.TOrderEvaluateTag;
|
import com.ruoyi.order.api.model.TOrderAppeal;
|
import com.ruoyi.order.api.model.TShoppingOrder;
|
import com.ruoyi.order.api.model.TShoppingOrderRefund;
|
import com.ruoyi.order.api.model.TChargingBill;
|
|
import com.ruoyi.chargingPile.api.model.TVehicleRamp;
|
import com.ruoyi.chargingPile.api.model.TParkingLot;
|
import com.ruoyi.chargingPile.api.model.TSiteMenu;
|
import com.ruoyi.chargingPile.api.model.TParkingRecord;
|
import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
|
import com.ruoyi.chargingPile.api.model.TFaultMessage;
|
import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
|
import com.ruoyi.chargingPile.api.model.TPartnerSite;
|
import com.ruoyi.chargingPile.api.model.TApplyChargingPile;
|
import com.ruoyi.chargingPile.api.model.TChargingPileNotification;
|
import com.ruoyi.chargingPile.api.model.TMonitoringEquipment;
|
import com.ruoyi.chargingPile.api.model.Site;
|
import com.ruoyi.chargingPile.api.model.TRepair;
|
import com.ruoyi.chargingPile.api.model.Partner;
|
import com.ruoyi.chargingPile.api.model.TCarport;
|
import com.ruoyi.chargingPile.api.model.TChargingGun;
|
import com.ruoyi.account.api.model.TAppUserSign;
|
|
import java.util.List;
|
|
import com.ruoyi.account.api.model.TAppUserVipDetail;
|
import com.ruoyi.account.api.model.TInvoiceInformation;
|
import com.ruoyi.account.api.model.TAppCoupon;
|
import com.ruoyi.account.api.model.TAppUserCar;
|
import com.ruoyi.account.api.model.TAppUser;
|
import com.ruoyi.account.api.model.TInviteUser;
|
import com.ruoyi.account.api.model.TAppUserAddress;
|
import com.ruoyi.account.api.model.TAppUserIntegralChange;
|
import com.ruoyi.account.api.model.TAppUserTag;
|
|
import com.ruoyi.account.api.feignClient.JianGuanAccountClient;
|
import com.ruoyi.account.api.vo.GovernmentCloudAccountVO;
|
import com.ruoyi.chargingPile.api.feignClient.JianGuanChargingPileClient;
|
import com.ruoyi.chargingPile.api.model.TChargingPile;
|
import com.ruoyi.chargingPile.api.vo.GovernmentCloudChargingPileVO;
|
import com.ruoyi.jianguan.service.*;
|
import com.ruoyi.order.api.feignClient.JianGuanOrderClient;
|
import com.ruoyi.order.api.vo.GovernmentCloudOrderVO;
|
import com.ruoyi.other.api.feignClient.JianGuanOtherClient;
|
import com.ruoyi.other.api.vo.GovernmentCloudOtherVO;
|
import com.ruoyi.system.api.feignClient.JianGuanSystemClient;
|
import com.ruoyi.system.api.vo.GovernmentCloudSystemVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
|
|
/**
|
* @author zhibing.pu
|
* @date 2023/7/11 8:39
|
*/
|
@Component
|
public class GovernmentCloudTask {
|
|
|
@Resource
|
private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService;
|
@Resource
|
private AccountingStrategyOrderService accountingStrategyOrderService;
|
|
@Resource
|
private GenTableColumnService genTableColumnService;
|
@Resource
|
private GenTableService genTableService;
|
@Resource
|
private IPartnerService partnerService;
|
@Resource
|
private IRegionService regionService;
|
@Resource
|
private ISiteService siteService;
|
@Resource
|
private ISysConfigService sysConfigService;
|
@Resource
|
private ISysDeptService deptService;
|
@Resource
|
private ISysDictDataService sysDictDataService;
|
@Resource
|
private ISysDictTypeService sysDictTypeService;
|
@Resource
|
private ISysLoginLogService sysLoginLogService;
|
@Resource
|
private ISysMenuService sysMenuService;
|
@Resource
|
private ISysNoticeService sysNoticeService;
|
@Resource
|
private ISysOperLogService sysOperLogService;
|
@Resource
|
private ISysPermissionService sysPermissionService;
|
@Resource
|
private ISysPostService sysPostService;
|
@Resource
|
private ISysRoleService sysRoleService;
|
@Resource
|
private ISysUserOnlineService sysUserOnlineService;
|
@Resource
|
private ISysUserRoleService sysUserRoleService;
|
@Resource
|
private ISysUserService sysUserService;
|
@Resource
|
private OperatorService operatorService;
|
@Resource
|
private TAccountingStrategyDetailService accountingStrategyDetailService;
|
@Resource
|
private TAccountingStrategyService accountingStrategyService;
|
@Resource
|
private TActivityService activityService;
|
@Resource
|
private TAdvertisingService advertisingService;
|
@Resource
|
private TAppCouponService appCouponService;
|
@Resource
|
private TApplyChargingPileService applyChargingPileService;
|
@Resource
|
private TAppUserAddressService appUserAddressService;
|
@Resource
|
private TAppUserCarService appUserCarService;
|
@Resource
|
private TAppUserIntegralChangeService appUserIntegralChangeService;
|
@Resource
|
private TAppUserService appUserService;
|
@Resource
|
private TAppUserSignService appUserSignService;
|
@Resource
|
private TAppUserTagService appUserTagService;
|
|
@Resource
|
|
private TAppUserVipDetailService appUserVipDetailService;
|
@Resource
|
|
private TCarportService carportService;
|
@Resource
|
|
private TChargingBillService chargingBillService;
|
@Resource
|
|
private TChargingGunService chargingGunService;
|
@Resource
|
private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
|
@Resource
|
private TChargingOrderRefundService chargingOrderRefundService;
|
@Resource
|
private TChargingOrderService chargingOrderService;
|
@Resource
|
private TChargingPileNotificationService chargingPileNotificationService;
|
@Resource
|
private TChargingPileService chargingPileService;
|
@Resource
|
private TCompanyService companyService;
|
@Resource
|
private TCouponService couponService;
|
@Resource
|
private TEnterpriseUserApplicationService enterpriseUserApplicationService;
|
@Resource
|
private TEvaluationTagService evaluationTagService;
|
@Resource
|
private TExchangeOrderService exchangeOrderService;
|
@Resource
|
private TFaultMessageService faultMessageService;
|
@Resource
|
private TGoodsService goodsService;
|
@Resource
|
private TGrantVipService grantVipService;
|
@Resource
|
private THtmlService htmlService;
|
@Resource
|
private TIntegralRuleService integralRuleService;
|
@Resource
|
private TInviteUserService inviteUserService;
|
@Resource
|
private TInvoiceInformationService tInvoiceInformationService;
|
@Resource
|
private TInvoiceTypeService invoiceTypeService;
|
@Resource
|
private TMonitoringEquipmentService monitoringEquipmentService;
|
@Resource
|
private TNoticeService noticeService;
|
@Resource
|
private TOrderAppealService orderAppealService;
|
@Resource
|
private TOrderEvaluateService orderEvaluateService;
|
@Resource
|
private TOrderEvaluateTagService orderEvaluateTagService;
|
@Resource
|
private TOrderInvoiceDetailService orderInvoiceDetailService;
|
@Resource
|
private TOrderInvoiceService orderInvoiceService;
|
@Resource
|
private TParkingLotService parkingLotService;
|
@Resource
|
private TParkingRecordService parkingRecordService;
|
@Resource
|
private TPartnerSiteService partnerSiteService;
|
@Resource
|
private TRepairService repairService;
|
@Resource
|
private TRoleSiteService roleSiteService;
|
@Resource
|
private TSettlementConfirmService settlementConfirmService;
|
@Resource
|
private TShoppingOrderRefundService shoppingOrderRefundService;
|
@Resource
|
private TShoppingOrderService shoppingOrderService;
|
@Resource
|
private TSiteMenuService siteMenuService;
|
@Resource
|
private TSystemConfigurationService systemConfigurationService;
|
@Resource
|
private TUserSiteService userSiteService;
|
@Resource
|
private TUserTagService userTagService;
|
@Resource
|
private TVehicleRampService vehicleRampService;
|
@Resource
|
private TVipOrderRefundService vipOrderRefundService;
|
@Resource
|
private TVipOrderService vipOrderService;
|
@Resource
|
private TVipService vipService;
|
|
|
@Resource
|
private JianGuanAccountClient jianGuanAccountClient;
|
@Resource
|
private JianGuanChargingPileClient jianGuanChargingPileClient;
|
@Resource
|
private JianGuanOrderClient jianGuanOrderClient;
|
@Resource
|
private JianGuanOtherClient jianGuanOtherClient;
|
@Resource
|
private JianGuanSystemClient jianGuanSystemClient;
|
|
// 每天早上9点执行的定时任务
|
@Scheduled(cron = "0 0 9 * * ?")
|
public void taskMonth() {
|
// account服务
|
GovernmentCloudAccountVO data = jianGuanAccountClient.listAll().getData();
|
if (data != null) {
|
List<TAppCoupon> appCoupons = data.getAppCoupons();
|
if (!appCoupons.isEmpty()) {
|
appCouponService.saveBatch(appCoupons);
|
}
|
List<TAppUser> appUsers = data.getAppUsers();
|
if (!appUsers.isEmpty()) {
|
appUserService.saveBatch(appUsers);
|
}
|
List<TAppUserAddress> appUserAddresses = data.getAppUserAddresses();
|
if (!appUserAddresses.isEmpty()) {
|
appUserAddressService.saveBatch(appUserAddresses);
|
}
|
List<TAppUserCar> appUserCars = data.getAppUserCars();
|
if (!appUserCars.isEmpty()) {
|
appUserCarService.saveBatch(appUserCars);
|
}
|
List<TAppUserIntegralChange> appUserIntegralChanges = data.getAppUserIntegralChanges();
|
if (!appUserIntegralChanges.isEmpty()) {
|
appUserIntegralChangeService.saveBatch(appUserIntegralChanges);
|
}
|
List<TAppUserSign> appUserSigns = data.getAppUserSigns();
|
if (!appUserSigns.isEmpty()) {
|
appUserSignService.saveBatch(appUserSigns);
|
}
|
List<TAppUserTag> appUserTags = data.getAppUserTags();
|
if (!appUserTags.isEmpty()) {
|
appUserTagService.saveBatch(appUserTags);
|
}
|
List<TAppUserVipDetail> appUserVipDetails = data.getAppUserVipDetails();
|
if (!appUserVipDetails.isEmpty()) {
|
appUserVipDetailService.saveBatch(appUserVipDetails);
|
}
|
List<TInviteUser> inviteUsers = data.getInviteUsers();
|
if (!inviteUsers.isEmpty()) {
|
inviteUserService.saveBatch(inviteUsers);
|
}
|
List<TInvoiceInformation> invoiceInformations = data.getInvoiceInformations();
|
if (!invoiceInformations.isEmpty()) {
|
tInvoiceInformationService.saveBatch(invoiceInformations);
|
}
|
}
|
// chargingPile服务
|
GovernmentCloudChargingPileVO data1 = jianGuanChargingPileClient.listAll().getData();
|
if (data1 != null) {
|
List<Partner> partners = data1.getPartners();
|
if (!partners.isEmpty()) {
|
partnerService.saveBatch(partners);
|
}
|
List<Site> sites = data1.getSites();
|
if (!sites.isEmpty()) {
|
siteService.saveBatch(sites);
|
}
|
List<TAccountingStrategy> accountingStrategies = data1.getAccountingStrategies();
|
if (!accountingStrategies.isEmpty()) {
|
accountingStrategyService.saveBatch(accountingStrategies);
|
}
|
List<TAccountingStrategyDetail> accountingStrategyDetails = data1.getAccountingStrategyDetails();
|
if (!accountingStrategyDetails.isEmpty()) {
|
accountingStrategyDetailService.saveBatch(accountingStrategyDetails);
|
}
|
List<TApplyChargingPile> applyChargingPiles = data1.getApplyChargingPiles();
|
if (!applyChargingPiles.isEmpty()) {
|
applyChargingPileService.saveBatch(applyChargingPiles);
|
}
|
List<TCarport> carports = data1.getCarports();
|
if (!carports.isEmpty()) {
|
carportService.saveBatch(carports);
|
}
|
List<TChargingGun> chargingGuns = data1.getChargingGuns();
|
if (!chargingGuns.isEmpty()) {
|
chargingGunService.saveBatch(chargingGuns);
|
}
|
List<TChargingPile> chargingPiles = data1.getChargingPiles();
|
if (!chargingPiles.isEmpty()) {
|
chargingPileService.saveBatch(chargingPiles);
|
}
|
List<TChargingPileNotification> chargingPileNotifications = data1.getChargingPileNotifications();
|
if (!chargingPileNotifications.isEmpty()) {
|
chargingPileNotificationService.saveBatch(chargingPileNotifications);
|
}
|
List<TFaultMessage> faultMessages = data1.getFaultMessages();
|
if (!faultMessages.isEmpty()) {
|
faultMessageService.saveBatch(faultMessages);
|
}
|
List<TMonitoringEquipment> monitoringEquipments = data1.getMonitoringEquipments();
|
if (!monitoringEquipments.isEmpty()) {
|
monitoringEquipmentService.saveBatch(monitoringEquipments);
|
}
|
List<TParkingLot> parkingLots = data1.getParkingLots();
|
if (!parkingLots.isEmpty()) {
|
parkingLotService.saveBatch(parkingLots);
|
}
|
List<TParkingRecord> parkingRecords = data1.getParkingRecords();
|
if (!parkingRecords.isEmpty()) {
|
parkingRecordService.saveBatch(parkingRecords);
|
}
|
// List<TPartnerSite> partnerSites = data1.getPartnerSites();
|
// if (!partnerSites.isEmpty()) {
|
// partnerSiteService.saveBatch(partnerSites);
|
// }
|
List<TRepair> repairs = data1.getRepairs();
|
if (!repairs.isEmpty()) {
|
repairService.saveBatch(repairs);
|
}
|
// List<TSiteMenu> siteMenus = data1.getSiteMenus();
|
// if (!siteMenus.isEmpty()) {
|
// siteMenuService.saveBatch(siteMenus);
|
// }
|
List<TVehicleRamp> vehicleRamps = data1.getVehicleRamps();
|
if (!vehicleRamps.isEmpty()) {
|
vehicleRampService.saveBatch(vehicleRamps);
|
}
|
}
|
//order服务
|
GovernmentCloudOrderVO data2 = jianGuanOrderClient.listAll().getData();
|
|
|
if (data2 != null) {
|
List<AccountingStrategyDetailOrder> accountingStrategyDetailOrders = data2.getAccountingStrategyDetailOrders();
|
if (!accountingStrategyDetailOrders.isEmpty()) {
|
accountingStrategyDetailOrderService.saveBatch(accountingStrategyDetailOrders);
|
}
|
List<AccountingStrategyOrder> accountingStrategyOrders = data2.getAccountingStrategyOrders();
|
if (!accountingStrategyOrders.isEmpty()) {
|
accountingStrategyOrderService.saveBatch(accountingStrategyOrders);
|
}
|
List<TChargingBill> chargingBills = data2.getChargingBills();
|
if (!chargingBills.isEmpty()) {
|
chargingBillService.saveBatch(chargingBills);
|
}
|
List<TChargingOrder> chargingOrders = data2.getChargingOrders();
|
if (!chargingOrders.isEmpty()) {
|
chargingOrderService.saveBatch(chargingOrders);
|
}
|
List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = data2.getChargingOrderAccountingStrategies();
|
if (!chargingOrderAccountingStrategies.isEmpty()) {
|
chargingOrderAccountingStrategyService.saveBatch(chargingOrderAccountingStrategies);
|
}
|
List<TChargingOrderRefund> chargingOrderRefunds = data2.getChargingOrderRefunds();
|
if (!chargingOrderRefunds.isEmpty()) {
|
chargingOrderRefundService.saveBatch(chargingOrderRefunds);
|
}
|
List<TExchangeOrder> exchangeOrders = data2.getExchangeOrders();
|
if (!exchangeOrders.isEmpty()) {
|
exchangeOrderService.saveBatch(exchangeOrders);
|
}
|
List<TGrantVip> grantVips = data2.getGrantVips();
|
if (!grantVips.isEmpty()) {
|
grantVipService.saveBatch(grantVips);
|
}
|
List<TOrderAppeal> orderAppeals = data2.getOrderAppeals();
|
if (!orderAppeals.isEmpty()) {
|
orderAppealService.saveBatch(orderAppeals);
|
}
|
List<TOrderEvaluate> orderEvaluates = data2.getOrderEvaluates();
|
if (!orderEvaluates.isEmpty()) {
|
orderEvaluateService.saveBatch(orderEvaluates);
|
}
|
List<TOrderEvaluateTag> orderEvaluateTags = data2.getOrderEvaluateTags();
|
if (!orderEvaluateTags.isEmpty()) {
|
orderEvaluateTagService.saveBatch(orderEvaluateTags);
|
}
|
List<TOrderInvoice> orderInvoices = data2.getOrderInvoices();
|
if (!orderInvoices.isEmpty()) {
|
orderInvoiceService.saveBatch(orderInvoices);
|
}
|
List<TOrderInvoiceDetail> orderInvoiceDetails = data2.getOrderInvoiceDetails();
|
if (!orderInvoiceDetails.isEmpty()) {
|
orderInvoiceDetailService.saveBatch(orderInvoiceDetails);
|
}
|
List<TSettlementConfirm> settlementConfirms = data2.getSettlementConfirms();
|
if (!settlementConfirms.isEmpty()) {
|
settlementConfirmService.saveBatch(settlementConfirms);
|
}
|
List<TShoppingOrder> shoppingOrders = data2.getShoppingOrders();
|
if (!shoppingOrders.isEmpty()) {
|
shoppingOrderService.saveBatch(shoppingOrders);
|
}
|
List<TShoppingOrderRefund> shoppingOrderRefunds = data2.getShoppingOrderRefunds();
|
if (!shoppingOrderRefunds.isEmpty()) {
|
shoppingOrderRefundService.saveBatch(shoppingOrderRefunds);
|
}
|
List<TVipOrder> vipOrders = data2.getVipOrders();
|
if (!vipOrders.isEmpty()) {
|
vipOrderService.saveBatch(vipOrders);
|
}
|
List<TVipOrderRefund> vipOrderRefunds = data2.getVipOrderRefunds();
|
if (!vipOrderRefunds.isEmpty()) {
|
vipOrderRefundService.saveBatch(vipOrderRefunds);
|
}
|
}
|
// other服务
|
GovernmentCloudOtherVO data3 = jianGuanOtherClient.listAll().getData();
|
if (data3 != null) {
|
List<Operator> operators = data3.getOperators();
|
if (!operators.isEmpty()) {
|
operatorService.saveOrUpdateBatch(operators);
|
}
|
List<TActivity> activities = data3.getActivities();
|
if (!activities.isEmpty()) {
|
activityService.saveBatch(activities);
|
}
|
List<TAdvertising> advertisings = data3.getAdvertisings();
|
if (!advertisings.isEmpty()) {
|
advertisingService.saveBatch(advertisings);
|
}
|
List<TCompany> companies = data3.getCompanies();
|
if (!companies.isEmpty()) {
|
companyService.saveBatch(companies);
|
}
|
List<TCoupon> coupons = data3.getCoupons();
|
if (!coupons.isEmpty()) {
|
couponService.saveBatch(coupons);
|
}
|
List<TEnterpriseUserApplication> enterpriseUserApplications = data3.getEnterpriseUserApplications();
|
if (!enterpriseUserApplications.isEmpty()) {
|
enterpriseUserApplicationService.saveBatch(enterpriseUserApplications);
|
}
|
List<TEvaluationTag> evaluationTags = data3.getEvaluationTags();
|
if (!evaluationTags.isEmpty()) {
|
evaluationTagService.saveBatch(evaluationTags);
|
}
|
List<TGoods> goods = data3.getGoods();
|
if (!goods.isEmpty()) {
|
goodsService.saveBatch(goods);
|
}
|
List<THtml> htmls = data3.getHtmls();
|
if (!htmls.isEmpty()) {
|
htmlService.saveOrUpdateBatch(htmls);
|
}
|
List<TIntegralRule> integralRules = data3.getIntegralRules();
|
if (!integralRules.isEmpty()) {
|
integralRuleService.saveBatch(integralRules);
|
}
|
List<TInvoiceType> invoiceTypes = data3.getInvoiceTypes();
|
if (!invoiceTypes.isEmpty()) {
|
invoiceTypeService.saveBatch(invoiceTypes);
|
}
|
List<TNotice> notices = data3.getNotices();
|
if (!notices.isEmpty()) {
|
noticeService.saveBatch(notices);
|
}
|
List<TSystemConfiguration> systemConfigurations = data3.getSystemConfigurations();
|
if (!systemConfigurations.isEmpty()) {
|
systemConfigurationService.saveOrUpdateBatch(systemConfigurations);
|
}
|
List<TUserTag> userTags = data3.getUserTags();
|
if (!userTags.isEmpty()) {
|
userTagService.saveBatch(userTags);
|
}
|
List<TVip> vips = data3.getVips();
|
if (!vips.isEmpty()) {
|
vipService.saveBatch(vips);
|
}
|
}
|
GovernmentCloudSystemVO data4 = jianGuanSystemClient.listAll().getData();
|
if (data4 != null) {
|
List<SysLoginLog> loginLogs = data4.getLoginLogs();
|
if (!loginLogs.isEmpty()) {
|
sysLoginLogService.saveBatch(loginLogs);
|
}
|
List<SysOperLog> sysOperLogs = data4.getSysOperLogs();
|
if (!sysOperLogs.isEmpty()) {
|
sysOperLogService.saveBatch(sysOperLogs);
|
}
|
List<SysRole> sysRoles = data4.getSysRoles();
|
if (!sysRoles.isEmpty()) {
|
sysRoleService.saveBatch(sysRoles);
|
}
|
List<SysUser> sysUsers = data4.getSysUsers();
|
if (!sysUsers.isEmpty()) {
|
sysUserService.saveBatch(sysUsers);
|
}
|
}
|
}
|
}
|