Browse Source

新增资源化字典动态字典

Airhead 6 years ago
parent
commit
7c6a2b9b72

+ 37 - 17
src/main/java/com/yihu/ehr/resource/model/RsDictionary.java

@ -4,16 +4,20 @@ import javax.persistence.*;
/**
 * 资源字典
 * <p>
 *
 * Created by lyr on 2016/5/13.
 * @author lyr
 * @date 2016/5/13
 */
@Entity
@Table(name="rs_dictionary")
@Table(name = "rs_dictionary")
public class RsDictionary {
    private int id;
    private String code;
    private String name;
    private String description;
    private Integer dynamic;
    private String sql;
    @Id
@ -22,37 +26,53 @@ public class RsDictionary {
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    @Column(name = "code",nullable = false)
    public String getCode()
    {
    @Column(name = "code", nullable = false)
    public String getCode() {
        return code;
    }
    public void setCode(String code)
    {
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name="name",nullable = false)
    public String getName()
    {
    @Column(name = "name", nullable = false)
    public String getName() {
        return name;
    }
    public void setName(String name)
    {
    public void setName(String name) {
        this.name = name;
    }
    @Column(name="description")
    public String getDescription()
    {
    @Column(name = "description")
    public String getDescription() {
        return description;
    }
    public void setDescription(String description)
    {
    public void setDescription(String description) {
        this.description = description;
    }
    @Column(name = "dynamic")
    public Integer getDynamic() {
        return dynamic;
    }
    public void setDynamic(Integer dynamic) {
        this.dynamic = dynamic;
    }
    @Column(name = "sql")
    public String getSql() {
        return sql;
    }
    public void setSql(String sql) {
        this.sql = sql;
    }
}

+ 21 - 1
src/main/java/com/yihu/ehr/resource/service/RsDictionaryEntryService.java

@ -3,8 +3,10 @@ package com.yihu.ehr.resource.service;
import com.yihu.ehr.query.BaseJpaService;
import com.yihu.ehr.redis.client.RedisClient;
import com.yihu.ehr.resource.dao.RsDictionaryEntryDao;
import com.yihu.ehr.resource.model.RsDictionary;
import com.yihu.ehr.resource.model.RsDictionaryEntry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
@ -35,6 +37,9 @@ public class RsDictionaryEntryService extends BaseJpaService<RsDictionaryEntry,
    @Autowired
    private RsDictionaryEntryDao dictionaryEntryDao;
    @Autowired
    private RsDictionaryService rsDictionaryService;
    /**
     * 简化资源字典缓存,默认缓存3600秒
     *
@ -49,13 +54,28 @@ public class RsDictionaryEntryService extends BaseJpaService<RsDictionaryEntry,
            return value;
        }
        RsDictionaryEntry rsDictionaryEntry = dictionaryEntryDao.findByDictcodeAndCode(dict, code);
        RsDictionary rsDictionary = rsDictionaryService.findByCode(dict);
        if (rsDictionary == null) {
            return "";
        }
        RsDictionaryEntry rsDictionaryEntry;
        if (rsDictionary.getDynamic() == 0) {
            rsDictionaryEntry = dictionaryEntryDao.findByDictcodeAndCode(dict, code);
        } else {
            String sql = "select code, name from (" + rsDictionary.getSql() + ") a where a.code=?";
            rsDictionaryEntry = jdbcTemplate.queryForObject(
                    sql, new Object[]{code},
                    new BeanPropertyRowMapper<>(RsDictionaryEntry.class));
        }
        if (rsDictionaryEntry == null) {
            return "";
        }
        redisClient.set(key, rsDictionaryEntry.getName(), 3600);
        return rsDictionaryEntry.getName();
    }