AJ_Report(7)

2021SC@SDUSC
源码地址:…AJ_report\report-master\report-core\src\main\java\com\anjiplus\template\gaea\business\cache\ReportCacheHelper.java
源码内容:

package com.anjiplus.template.gaea.business.cache;


import com.anji.plus.gaea.cache.CacheHelper;
import com.google.common.collect.Maps;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class ReportCacheHelper implements CacheHelper, ApplicationContextAware {

    @Autowired
    private Cache cache;

    @Override
    public String stringGet(String key) {
        Cache.ValueWrapper valueWrapper = cache.get(key);
        if (valueWrapper != null) {
            return (String) valueWrapper.get();
        }
        return CacheHelper.super.stringGet(key);
    }

    @Override
    public Boolean setIfAbsent(String key, String value) {
        cache.putIfAbsent(key, value);
        return true;
    }


    @Override
    public boolean exist(String key) {
        String cacheHoldTime = stringGet(key + "_HoldTime");
        if (cacheHoldTime != null && Long.parseLong(cacheHoldTime) > 0) {
            if (Long.parseLong(cacheHoldTime) < System.currentTimeMillis()) {
                delete(key + "_HoldTime");
                delete(key);
                return false;
            }
        }
        return cache.get(key) != null;
    }


    @Override
    public void stringSet(String key, String value) {
        cache.put(key, value);
    }


    @Override
    public String regKey(String key) {
        return CacheHelper.super.regKey(key);
    }

    @Override
    public void stringSetExpire(String key, String value, long seconds) {
        stringSet(key, value);
        if (seconds > 0) {
            //缓存失效时间
            stringSet(key + "_HoldTime", String.valueOf(System.currentTimeMillis() + seconds * 1000));
        }
    }

    @Override
    public Map<String, String> hashGet(String key) {
        Cache.ValueWrapper t = cache.get(key);
        if (t != null) {
            return (Map<String, String>) t.get();
        }
        return Maps.newHashMap();
    }

    @Override
    public String hashGetString(String key, String hashKey) {
        Map<String, String> stringStringMap = hashGet(key);
        return stringStringMap.get(hashKey);
    }

    @Override
    public void hashDel(String key, String hashKey) {
        Map<String, String> stringStringMap = hashGet(key);
        stringStringMap.remove(hashKey);
    }

    @Override
    public void hashBatchDel(String key, Set<String> hashKeys) {
        Map<String, String> stringStringMap = hashGet(key);
        hashKeys.forEach(stringStringMap::remove);
    }

    @Override
    public boolean hashExist(String key, String hashKey) {
        if (exist(key)) {
            Map<String, String> map = hashGet(key);
            return map.containsKey(hashKey);
        }
        return false;
    }

    @Override
    public boolean hashAnyExist(String key, String[] hashKeys) {
        return CacheHelper.super.hashAnyExist(key, hashKeys);
    }

    @Override
    public void hashSet(String key, String hashKey, String hashValue) {
        Map<String, String> map;
        if (exist(key)) {
            map = hashGet(key);
        } else {
            map = new HashMap<>();
        }
        map.put(hashKey, hashValue);
        hashSet(key, map);
    }

    @Override
    public void hashSet(String key, Map<String, String> hash) {
        cache.put(key, hash);
    }

    @Override
    public boolean delete(String key) {
        if (exist(key)) {
            cache.evict(key);
        }
        return true;
    }

    @Override
    public boolean delete(List<String> keys) {
        keys.forEach(this::delete);
        return true;
    }


    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        /*基于内存的本地缓存*/
        cache = (Cache) applicationContext.getBean("ehCacheCache");
    }
}

AJ-Report是一款常用的报表工具,具有轻量、易用和灵活定制的特点。在使用AJ-Report进行报表开发时,可以根据需要添加所需的组件,以满足报表设计的需求。下面将介绍AJ-Report添加组件的方法。 首先,打开AJ-Report的报表设计器界面,选择需要添加组件的报表,点击鼠标右键,在弹出的菜单中选择“添加控件”命令,系统会弹出可供添加的组件列表。 在组件列表中,可以选择需要添加的组件,例如文本框、表格、图表等,在选择完组件后,将其拖拽到报表的相应位置即可。在拖拽组件时,可以通过Ctrl键或Shift键多选或多拖拽组件。 添加组件后,还可以对其进行进一步的定制。在组件的属性面板中,可以设置组件的颜色、字体、排版等样式属性,也可以设置组件的数据源、数据筛选等数据属性。 此外,在AJ-Report中还可以通过自定义组件来扩展报表的功能。在报表设计器中,可以创建自定义控件,并通过代码进行定制和开发。自定义组件在展示数据或实现业务逻辑时,具有强大的灵活性和可扩展性。 总的来说,AJ-Report添加组件的方法很简单,在设计器中选择需要添加的组件,拖拽到相应位置即可。同时,AJ-Report还具有自定义组件功能,可以扩展报表的功能。通过添加组件和定制组件,可以让AJ-Report的报表工作更加灵活和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值