From 189cb9a1b925fbdfde02c175b2d84f4fe00dbaa7 Mon Sep 17 00:00:00 2001
From: dougang <78125310@kidgrow.com>
Date: Thu, 03 Dec 2020 16:35:59 +0800
Subject: [PATCH] 增加医院信息同步redis

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java         |   11 +++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java |   79 +++++++++++++++++++++-----
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml                                   |    7 ++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java                   |    2 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java            |   13 ++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java |   42 +++++++------
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/config/RedisStartupRunner.java              |   19 ++++++
 7 files changed, 136 insertions(+), 37 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
index 2de6bff..d03f898 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
@@ -1,5 +1,6 @@
 package com.kidgrow.oprationcenter.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -83,5 +84,6 @@
     /**
      * 查询关键字
      */
+    @TableField(exist = false)
     private String keyWord;
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java
index 1ca7145..9ddb567 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java
@@ -10,15 +10,17 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @version 1.0
  * @Description: 筛查医院信息表-未完待续<br>
  * @Project: 用户中心<br>
  * @CreateDate: Created in 2020-04-01 09:37:05 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
- * @version 1.0
  */
 public interface HospitalScreeningMapper extends SuperMapper<HospitalScreening> {
     /**
      * 分页查询筛查医院信息表-未完待续列表
+     *
      * @param page
      * @param params
      * @return
@@ -27,6 +29,7 @@
 
     /**
      * 根据HospitalScreening对象当做查询条件进行查询
+     *
      * @param
      * @return HospitalScreening对象
      */
@@ -34,8 +37,16 @@
 
     /**
      * 根据医院名称模糊查询医院数据列表
+     *
      * @param hospitalName
      * @return
      */
     List<HospitalScreening> findByName(@Param("hospitalName") String hospitalName);
+
+    /**
+     * 查询所有有效医院,放入redis中
+     *
+     * @return
+     */
+    List<HospitalScreening> findAll();
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java
index 9396aad..dced664 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java
@@ -54,10 +54,21 @@
 
     /**
      * 导出医院数据
+     *
      * @param param 参数
      * @return
      */
     List<ScreeningHospitalDataExcel> export(Map<String, Object> param);
 
+    /**
+     * 医院数据放到redis
+     */
+    void tableToRedis();
+
+    /**
+     * @param hospitalScreening
+     */
+    void updateRedisById(HospitalScreening hospitalScreening);
+
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java
index ac8150b..313eaff 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java
@@ -9,6 +9,7 @@
 import com.kidgrow.oprationcenter.model.HospitalScreening;
 import com.kidgrow.oprationcenter.model.ScreeningHospitalDataExcel;
 import com.kidgrow.oprationcenter.service.IHospitalScreeningService;
+import com.kidgrow.redis.util.RedisUtils;
 import com.kidgrow.report.feign.ReportService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.MapUtils;
@@ -20,11 +21,12 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @version 1.0
  * @Description: 筛查医院信息表-未完待续<br>
  * @Project: 用户中心<br>
  * @CreateDate: Created in 2020-04-01 09:37:05 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
- * @version 1.0
  */
 @Slf4j
 @Service
@@ -32,49 +34,56 @@
 
     @Autowired
     private ReportService reportService;
+    @Autowired
+    private RedisUtils redisUtils;
+
+    private static final String CUSOTMERHOSPITAL = "CUSOTMER_HOSPITAL";
 
     /**
      * 列表
+     *
      * @param params
      * @return
      */
     @Override
-    public PageResult<HospitalScreening> findList(Map<String, Object> params){
+    public PageResult<HospitalScreening> findList(Map<String, Object> params) {
         Page<HospitalScreening> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
-        List<HospitalScreening> list  =  baseMapper.findList(page, params);
+        List<HospitalScreening> list = baseMapper.findList(page, params);
         return PageResult.<HospitalScreening>builder().data(list).code(0).count(page.getTotal()).build();
     }
 
     /**
-   * 根据HospitalScreening对象当做查询条件进行查询
-   * @param hospitalScreening
-   * @return HospitalScreening
-   */
+     * 根据HospitalScreening对象当做查询条件进行查询
+     *
+     * @param hospitalScreening
+     * @return HospitalScreening
+     */
     @Override
-    public HospitalScreening findByObject(HospitalScreening hospitalScreening){
+    public HospitalScreening findByObject(HospitalScreening hospitalScreening) {
         return baseMapper.findByObject(hospitalScreening);
     }
 
     /**
      * 更新状态:推送装填,启停状态
+     *
      * @param params 包含:1、type:0推送,1启停
-     *                     2、ID :ID
-     *                     3、val:对用的值
+     *               2、ID :ID
+     *               3、val:对用的值
      * @return
      */
     @Override
     public ResultBody updateEnabled(Map<String, Object> params) {
-        int type =  MapUtils.getInteger(params,"type");
-        int val =  MapUtils.getInteger(params,"objVal");
-        long id =  MapUtils.getLong(params,"objId");
+        int type = MapUtils.getInteger(params, "type");
+        int val = MapUtils.getInteger(params, "objVal");
+        long id = MapUtils.getLong(params, "objId");
 
         HospitalScreening hospitalScreening = baseMapper.selectById(id);
 
-        if(hospitalScreening == null){
+        if (hospitalScreening == null) {
             return ResultBody.failed("医院数据不存在!");
         }
 
-        switch (type){
+        switch (type) {
             case 0:
                 hospitalScreening.setIsScreeningPush(val);
                 break;
@@ -87,11 +96,14 @@
 
         int count = baseMapper.updateById(hospitalScreening);
 
+        updateRedisById(hospitalScreening);
+
         return count > 0 ? ResultBody.ok().msg("更新成功") : ResultBody.failed("更新失败");
     }
 
     /**
      * 根据医院名称模糊查询医院数据列表
+     *
      * @param hospitalName
      * @return
      */
@@ -100,13 +112,48 @@
         return ResultBody.ok().data(baseMapper.findByName(hospitalName)).msg("查询成功");
     }
 
+    /**
+     * 医院数据导出
+     *
+     * @param param 参数
+     * @return
+     */
     @Override
     public List<ScreeningHospitalDataExcel> export(Map<String, Object> param) {
         List<ScreeningHospitalDataExcel> list = null;
         ResultBody resultBody = reportService.exportData(param);
-        if(resultBody.getCode() == 0 && resultBody.getData() != null){
+        if (resultBody.getCode() == 0 && resultBody.getData() != null) {
             list = JSONArray.parseArray(JSONArray.toJSONString(resultBody.getData()), ScreeningHospitalDataExcel.class);
         }
         return list;
     }
+
+    /**
+     * 初始化,将表中的数据放入redis中
+     */
+    @Override
+    public void tableToRedis() {
+        List<HospitalScreening> list = baseMapper.findAll();
+        if (list.size() > 0) {
+            if (redisUtils.hasKey(CUSOTMERHOSPITAL)) {
+                redisUtils.del(CUSOTMERHOSPITAL);
+            }
+
+            for (HospitalScreening hs : list) {
+                redisUtils.hset(CUSOTMERHOSPITAL, String.valueOf(hs.getId()), hs);
+            }
+        }
+    }
+
+    /**
+     * 更新redis
+     *
+     * @param hospitalScreening
+     */
+    @Override
+    public void updateRedisById(HospitalScreening hospitalScreening) {
+        if (redisUtils.hasKey(CUSOTMERHOSPITAL)) {
+            redisUtils.hset(CUSOTMERHOSPITAL, String.valueOf(hospitalScreening.getId()), hospitalScreening);
+        }
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
index 94eff1b..efb5878 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
@@ -98,4 +98,11 @@
         where is_del=0 and enabled=1 and hospital_name LIKE concat('%',#{hospitalName},'%')
         order by hospital_name desc,id desc
     </select>
+
+    <select id="findAll" resultType="com.kidgrow.oprationcenter.model.HospitalScreening">
+        select
+        <include refid="Column_List"/>
+        from hospital_screening
+        where  is_del=0
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/config/RedisStartupRunner.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/config/RedisStartupRunner.java
new file mode 100644
index 0000000..c849ba8
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/config/RedisStartupRunner.java
@@ -0,0 +1,19 @@
+package com.kidgrow.oprationcenter.config;
+
+import com.kidgrow.oprationcenter.service.IHospitalScreeningService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Component //作为bean加入spring
+@Order(value = 2)//多个启动任务的执行顺序
+public class RedisStartupRunner implements CommandLineRunner {
+    @Autowired
+    IHospitalScreeningService hospitalScreeningService;
+
+    @Override
+    public void run(String... args) throws Exception {
+        hospitalScreeningService.tableToRedis();
+    }
+}
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java
index c3c48c5..d0918cd 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java
@@ -28,6 +28,7 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
  * @Description: 筛查医院信息表-未完待续
  * @Project: 运营中心
  * @CreateDate: Created in 2020-04-02 18:25:34 <br>
@@ -38,7 +39,7 @@
 @RestController
 @RequestMapping("/hospitalscreening")
 @Api(tags = "筛查医院信息表-未完待续")
-public class HospitalScreeningController  extends BaseController{
+public class HospitalScreeningController extends BaseController {
     @Autowired
     private IHospitalScreeningService hospitalScreeningService;
 
@@ -51,10 +52,10 @@
             @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
     })
     @GetMapping
-    public  PageResult<HospitalScreening> list(@RequestParam Map<String, Object> params) {
-        if(params.size()==0){
-            params.put("page",1);
-            params.put("limit",10);
+    public PageResult<HospitalScreening> list(@RequestParam Map<String, Object> params) {
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
         }
         return hospitalScreeningService.findList(params);
     }
@@ -85,26 +86,28 @@
     @ApiOperation(value = "保存")
     @PostMapping
     public ResultBody save(@Valid @RequestBody HospitalScreening hospitalScreening, BindingResult bindingResult) {
-        List<String> errMsg= new ArrayList<>();
+        List<String> errMsg = new ArrayList<>();
         if (bindingResult.hasErrors()) {
             for (ObjectError error : bindingResult.getAllErrors()) {
                 errMsg.add(error.getDefaultMessage());
             }
             return ResultBody.failed().msg(errMsg.toString());
-        }  else {
-            if(hospitalScreening.getId() == null){
+        } else {
+            if (hospitalScreening.getId() == null) {
                 HospitalScreening hs = new HospitalScreening();
                 hs.setHospitalId(hospitalScreening.getHospitalId());
                 HospitalScreening byObject = hospitalScreeningService.findByObject(hs);
-                if(byObject != null){
+                if (byObject != null) {
                     return ResultBody.failed().msg("该医院已添加");
                 }
             }
-            boolean v= hospitalScreeningService.saveOrUpdate(hospitalScreening);
-            if(v) {
+            boolean v = hospitalScreeningService.saveOrUpdate(hospitalScreening);
+            //更新redis
+            hospitalScreeningService.updateRedisById(hospitalScreening);
+
+            if (v) {
                 return ResultBody.ok().data(hospitalScreening).msg("保存成功");
-            }
-            else {
+            } else {
                 return ResultBody.failed().msg("保存失败");
             }
         }
@@ -116,11 +119,10 @@
     @ApiOperation(value = "删除")
     @DeleteMapping("/{id}")
     public ResultBody delete(@PathVariable Long id) {
-        boolean v= hospitalScreeningService.removeById(id);
-        if(v) {
+        boolean v = hospitalScreeningService.removeById(id);
+        if (v) {
             return ResultBody.ok().msg("删除成功");
-        }
-        else {
+        } else {
             return ResultBody.failed().msg("删除失败");
         }
     }
@@ -155,11 +157,11 @@
 
     @ApiOperation(value = "导出")
     @PostMapping("/export")
-    public void export(@RequestParam Map<String, Object> params, HttpServletResponse response)  throws IOException {
+    public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws IOException {
         List<ScreeningHospitalDataExcel> list = hospitalScreeningService.export(params);
         //导出操作
-        if(list != null && list.size() > 0) {
-            String name = MapUtils.getString(params,"hospitalName");
+        if (list != null && list.size() > 0) {
+            String name = MapUtils.getString(params, "hospitalName");
             ExcelUtil.exportExcel(list, null, name, ScreeningHospitalDataExcel.class, name, response);
         }
     }

--
Gitblit v1.8.0