chenweida пре 7 година
родитељ
комит
a752bd1fcc

+ 8 - 60
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/system/Icd10DictServcie.java

@ -2,18 +2,15 @@ package com.yihu.wlyy.service.system;
import com.yihu.wlyy.entity.dict.HealthProblemDict;
import com.yihu.wlyy.util.DateUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.thymeleaf.util.DartUtils;
import javax.annotation.PostConstruct;
import java.util.*;
import java.util.Date;
import java.util.List;
/**
 * Created by chenweida on 2017/8/9.
@ -31,6 +28,8 @@ public class Icd10DictServcie {
    private StringRedisTemplate redisTemplate;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private Icd10DictServcieJob icd10DictServcieJob;
    /**
     * 根据icd10的 code 获取name
@ -86,69 +85,18 @@ public class Icd10DictServcie {
        }
        List<HealthProblemDict> healthProblemDicts = getHealthProblemDicts();
        //缓存keyIcd10
        cacheIcd10(healthProblemDicts);
        icd10DictServcieJob.cacheIcd10(healthProblemDicts);
        //缓存keyHealthProblem
        cacheHealthProblem(healthProblemDicts);
        icd10DictServcieJob.cacheHealthProblem(healthProblemDicts);
        //缓存keyHealthProblem2Dict
        cacheHealthProblem2Dict(healthProblemDicts);
        icd10DictServcieJob.cacheHealthProblem2Dict(healthProblemDicts);
        //缓存keyDict2healthProblem
        cacheDict2healthProblem(healthProblemDicts);
        icd10DictServcieJob.cacheDict2healthProblem(healthProblemDicts);
        redisTemplate.opsForValue().set(ok, DateUtil.dateToStrLong(new Date()) + "初始化完成");
        return true;
    }
    @Async
    private void cacheIcd10(List<HealthProblemDict> healthProblemDicts) {
        healthProblemDicts.stream().forEach(one -> {
            String key = keyIcd10 + one.getCode();
            redisTemplate.opsForValue().set(key, one.getName());
        });
    }
    @Async
    private void cacheHealthProblem(List<HealthProblemDict> healthProblemDicts) {
        healthProblemDicts.stream().forEach(one -> {
            String key = keyHealthProblem + one.getHpcode();
            redisTemplate.opsForValue().set(key, one.getHpname());
        });
    }
    /**
     * key是 code   value是 hpcode  1对1
     */
    @Async
    private void cacheDict2healthProblem(List<HealthProblemDict> healthProblemDicts) {
        healthProblemDicts.stream().forEach(one -> {
            String key = keyDict2healthProblem + one.getCode();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("key", one.getHpcode());
            jsonObject.put("value", one.getHpname());
            redisTemplate.opsForValue().set(key, jsonObject.toString());
        });
    }
    /**
     * key是 hpcode    value是 code  1对多
     */
    @Async
    private void cacheHealthProblem2Dict(List<HealthProblemDict> healthProblemDicts) {
        Map<String, List<KeyValueModel>> saveMap = new HashMap<>();
        healthProblemDicts.stream().forEach(one -> {
            List<KeyValueModel> valueList = saveMap.get(one.getHpcode());
            if (valueList == null) {
                valueList = new ArrayList<KeyValueModel>();
            }
            valueList.add(new KeyValueModel(one.getCode(), one.getName()));
            saveMap.put(one.getHpcode(), valueList);
        });
        for (Map.Entry<String, List<KeyValueModel>> one : saveMap.entrySet()) {
            String key = keyHealthProblem2Dict + one.getKey();
            redisTemplate.opsForValue().set(key, JSONArray.fromObject(one.getValue()).toString());
        }
    }
    private List<HealthProblemDict> getHealthProblemDicts() {
        String sql = "select i.*,p.code hpcode,p.`name` hpname from icd10_dict i,hp_icd10_relation hp,health_problem_dict p where i.id=hp.icd10_id and hp.hp_id=p.id";

+ 83 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/system/Icd10DictServcieJob.java

@ -0,0 +1,83 @@
package com.yihu.wlyy.service.system;
import com.yihu.wlyy.entity.dict.HealthProblemDict;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/8/9.
 */
@Service
public class Icd10DictServcieJob {
    private final String keyIcd10 = "wlyy:dict:icd:Icd10:";
    private final String keyHealthProblem = "wlyy:dict:icd:HealthProblem:";
    private final String keyDict2healthProblem = "wlyy:dict:icd:Icd10ToHealthProblem:";
    private final String keyHealthProblem2Dict = "wlyy:dict:icd:HealthProblemToIcd10:";
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Async
    public void cacheIcd10(List<HealthProblemDict> healthProblemDicts) {
        healthProblemDicts.stream().forEach(one -> {
            String key = keyIcd10 + one.getCode();
            redisTemplate.opsForValue().set(key, one.getName());
        });
    }
    @Async
    public void cacheHealthProblem(List<HealthProblemDict> healthProblemDicts) {
        healthProblemDicts.stream().forEach(one -> {
            String key = keyHealthProblem + one.getHpcode();
            redisTemplate.opsForValue().set(key, one.getHpname());
        });
    }
    /**
     * key是 code   value是 hpcode  1对1
     */
    @Async
    public void cacheDict2healthProblem(List<HealthProblemDict> healthProblemDicts) {
        healthProblemDicts.stream().forEach(one -> {
            String key = keyDict2healthProblem + one.getCode();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("key", one.getHpcode());
            jsonObject.put("value", one.getHpname());
            redisTemplate.opsForValue().set(key, jsonObject.toString());
        });
    }
    /**
     * key是 hpcode    value是 code  1对多
     */
    @Async
    public void cacheHealthProblem2Dict(List<HealthProblemDict> healthProblemDicts) {
        Map<String, List<KeyValueModel>> saveMap = new HashMap<>();
        healthProblemDicts.stream().forEach(one -> {
            List<KeyValueModel> valueList = saveMap.get(one.getHpcode());
            if (valueList == null) {
                valueList = new ArrayList<KeyValueModel>();
            }
            valueList.add(new KeyValueModel(one.getCode(), one.getName()));
            saveMap.put(one.getHpcode(), valueList);
        });
        for (Map.Entry<String, List<KeyValueModel>> one : saveMap.entrySet()) {
            String key = keyHealthProblem2Dict + one.getKey();
            redisTemplate.opsForValue().set(key, JSONArray.fromObject(one.getValue()).toString());
        }
    }
}