Переглянути джерело

多线程初始化后台数据

0027005599 2 роки тому
батько
коміт
22e619a78a

+ 79 - 54
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/projectcache/HisMedicalProjectCache.java

@@ -20,6 +20,7 @@ import org.jeecg.modules.medical.service.ITreatmentItemsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.HashOperations;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
@@ -55,16 +56,7 @@ public class HisMedicalProjectCache {
                 pageNum = pageNum + 1;
             }
             for (int i = 1; i <= pageNum; i++) {
-                IPage page = new Page(i, 1000);
-                List<MedicalInsuranceDrugs> medicalInsuranceDrugsList = medicalInsuranceDrugsService.lambdaQuery().isNotNull(MedicalInsuranceDrugs::getItemIdHosp).isNotNull(MedicalInsuranceDrugs::getMedicineCode).page(page).getRecords();
-                for (MedicalInsuranceDrugs medicalInsuranceDrugs : medicalInsuranceDrugsList) {
-                    try {
-                        redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, medicalInsuranceDrugs.getItemIdHosp(), medicalInsuranceDrugs.getMedicineCode());
-                        redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, medicalInsuranceDrugs.getMedicineCode(), medicalInsuranceDrugs.getMedicineName());
-                    } catch (Exception e) {
-                        log.error(e.getMessage(), e);
-                    }
-                }
+                asyncSetDrugs(i);
             }
         }
         count = treatmentItemsService.lambdaQuery().isNotNull(TreatmentItems::getItemIdHosp).isNotNull(TreatmentItems::getItemId).count();
@@ -75,17 +67,7 @@ public class HisMedicalProjectCache {
                 pageNum = pageNum + 1;
             }
             for (int i = 1; i <= pageNum; i++) {
-                IPage page = new Page(i, 1000);
-                List<TreatmentItems> treatmentItemsList = treatmentItemsService.lambdaQuery().isNotNull(TreatmentItems::getItemIdHosp).isNotNull(TreatmentItems::getItemId).page(page).getRecords();
-                for (TreatmentItems treatmentItems : treatmentItemsList) {
-                    try {
-                        redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, treatmentItems.getItemIdHosp(), treatmentItems.getItemId());
-                        redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, treatmentItems.getItemId(), treatmentItems.getItemName());
-                    } catch (Exception e) {
-                        log.error(e.getMessage(), e);
-                    }
-                }
-
+                asyncTreatmentItems(i);
             }
         }
 
@@ -97,16 +79,7 @@ public class HisMedicalProjectCache {
                 pageNum = pageNum + 1;
             }
             for (int i = 1; i <= pageNum; i++) {
-                IPage page = new Page(i, 1000);
-                List<MaterialItems> materialItemsList = materialItemsService.lambdaQuery().isNotNull(MaterialItems::getItemIdHosp).isNotNull(MaterialItems::getItemId).page(page).getRecords();
-                for (MaterialItems materialItem : materialItemsList) {
-                    try {
-                        redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, materialItem.getItemIdHosp(), materialItem.getItemId());
-                        redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, materialItem.getItemId(), materialItem.getItemName());
-                    } catch (Exception e) {
-                        log.error(e.getMessage(), e);
-                    }
-                }
+                asyncMaterialItems(i);
             }
         }
 
@@ -119,17 +92,7 @@ public class HisMedicalProjectCache {
                 pageNum = pageNum + 1;
             }
             for (int i = 1; i <= pageNum; i++) {
-                IPage page = new Page(i, 1000);
-                List<DiagnoseItems> diagnoseItemsList = diagnoseItemsService.lambdaQuery().isNotNull(DiagnoseItems::getDiagnoseCode).isNotNull(DiagnoseItems::getMedicalDiagnoseCode).page(page).getRecords();
-                for (DiagnoseItems diagnoseItems : diagnoseItemsList) {
-
-                    try {
-                        redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, diagnoseItems.getDiagnoseCode(), diagnoseItems.getMedicalDiagnoseCode());
-                        redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, diagnoseItems.getMedicalDiagnoseCode(), diagnoseItems.getMedicalDiagnoseName());
-                    } catch (Exception e) {
-                        log.error(e.getMessage(), e);
-                    }
-                }
+                asyncDiagnoseItems(i);
             }
         }
 
@@ -141,18 +104,7 @@ public class HisMedicalProjectCache {
                 pageNum = pageNum + 1;
             }
             for (int i = 1; i <= pageNum; i++) {
-                IPage page = new Page(i, 1000);
-                List<OperativeItems> operativeItemsList = operativeItemsService.lambdaQuery().isNotNull(OperativeItems::getOperativeCode).isNotNull(OperativeItems::getMedicalOperativeCode).page(page).getRecords();
-                for(OperativeItems operativeItem : operativeItemsList){
-
-                    try {
-                        redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, operativeItem.getOperativeCode(), operativeItem.getMedicalOperativeCode());
-                        redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, operativeItem.getMedicalOperativeCode(), operativeItem.getMedicalOperativeName());
-                    } catch (Exception e) {
-                        log.error(e.getMessage(), e);
-                    }
-
-                }
+                asyncOperativeItems(i);
             }
         }
     }
@@ -162,4 +114,77 @@ public class HisMedicalProjectCache {
         R o = (R) hashOperations.get(Constant.HIS_MEDICAL_DICT_KEY, medicalProjectCode);
         return o;
     }
+
+    @Async("commonTaskAsyncPool")
+    public void asyncSetDrugs(Integer pageIndex){
+        IPage page = new Page(pageIndex, 1000);
+        List<MedicalInsuranceDrugs> medicalInsuranceDrugsList = medicalInsuranceDrugsService.lambdaQuery().isNotNull(MedicalInsuranceDrugs::getItemIdHosp).isNotNull(MedicalInsuranceDrugs::getMedicineCode).page(page).getRecords();
+        for (MedicalInsuranceDrugs medicalInsuranceDrugs : medicalInsuranceDrugsList) {
+            try {
+                redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, medicalInsuranceDrugs.getItemIdHosp(), medicalInsuranceDrugs.getMedicineCode());
+                redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, medicalInsuranceDrugs.getMedicineCode(), medicalInsuranceDrugs.getMedicineName());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+    }
+
+    @Async("commonTaskAsyncPool")
+    public void asyncTreatmentItems(Integer pageIndex){
+        IPage page = new Page(pageIndex, 1000);
+        List<TreatmentItems> treatmentItemsList = treatmentItemsService.lambdaQuery().isNotNull(TreatmentItems::getItemIdHosp).isNotNull(TreatmentItems::getItemId).page(page).getRecords();
+        for (TreatmentItems treatmentItems : treatmentItemsList) {
+            try {
+                redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, treatmentItems.getItemIdHosp(), treatmentItems.getItemId());
+                redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, treatmentItems.getItemId(), treatmentItems.getItemName());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+    }
+
+    @Async("commonTaskAsyncPool")
+    public void asyncMaterialItems(Integer pageIndex){
+        IPage page = new Page(pageIndex, 1000);
+        List<MaterialItems> materialItemsList = materialItemsService.lambdaQuery().isNotNull(MaterialItems::getItemIdHosp).isNotNull(MaterialItems::getItemId).page(page).getRecords();
+        for (MaterialItems materialItem : materialItemsList) {
+            try {
+                redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, materialItem.getItemIdHosp(), materialItem.getItemId());
+                redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, materialItem.getItemId(), materialItem.getItemName());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+    }
+
+    @Async("commonTaskAsyncPool")
+    public void asyncDiagnoseItems(Integer pageIndex){
+        IPage page = new Page(pageIndex, 1000);
+        List<DiagnoseItems> diagnoseItemsList = diagnoseItemsService.lambdaQuery().isNotNull(DiagnoseItems::getDiagnoseCode).isNotNull(DiagnoseItems::getMedicalDiagnoseCode).page(page).getRecords();
+        for (DiagnoseItems diagnoseItems : diagnoseItemsList) {
+
+            try {
+                redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, diagnoseItems.getDiagnoseCode(), diagnoseItems.getMedicalDiagnoseCode());
+                redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, diagnoseItems.getMedicalDiagnoseCode(), diagnoseItems.getMedicalDiagnoseName());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+    }
+
+    @Async("commonTaskAsyncPool")
+    public void asyncOperativeItems(Integer pageIndex){
+        IPage page = new Page(pageIndex, 1000);
+        List<OperativeItems> operativeItemsList = operativeItemsService.lambdaQuery().isNotNull(OperativeItems::getOperativeCode).isNotNull(OperativeItems::getMedicalOperativeCode).page(page).getRecords();
+        for(OperativeItems operativeItem : operativeItemsList){
+
+            try {
+                redisTemplate.opsForHash().put(Constant.HIS_MEDICAL_DICT_KEY, operativeItem.getOperativeCode(), operativeItem.getMedicalOperativeCode());
+                redisTemplate.opsForHash().put(Constant.MEDICAL_CODE_NAME_KEY, operativeItem.getMedicalOperativeCode(), operativeItem.getMedicalOperativeName());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+
+        }
+    }
 }