From d7d0578b00c9ec24893e3a0c8e8ff3301f82bc2a Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期三, 13 十二月 2023 18:48:37 +0800
Subject: [PATCH] zjh 2023/12/13--1

---
 ltkj-admin/src/test/java/zjhTest.java                                               |   27 ++++
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java      |   43 ++++++++
 ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java |  140 +++++++++++++++++++++++++++
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java                   |    6 +
 ltkj-admin/src/main/java/com/ltkj/web/controller/sqlserver/TjSqlController.java     |   41 ++++++++
 5 files changed, 248 insertions(+), 9 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
index 1e29744..e9981ed 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
@@ -568,10 +568,26 @@
     @Override
     @Async("async")
     public void dockerSetCustomerLisByRedis(List<Long> ksproList, String ksId) {
+
         List<TjCustomer> yjAjaxResult = getYjAjaxResult(ksproList);
         List<TjCustomer> wjAjaxResult = getWjAjaxResult(ksproList);
         redisCache.setCacheMapValue(ksId + "ks", "wj", wjAjaxResult);
         redisCache.setCacheMapValue(ksId + "ks", "yj", yjAjaxResult);
+    }
+
+    @Override
+    @Async("async")
+    public void dockerSetYjCustomerByRedis(Long orderId,Long ksId) {
+        //宸叉(鍗曚釜瀛樺叆)0鏈,1宸叉
+        getDgYjAjaxResult(orderId,ksId);
+    }
+
+    @Override
+    @Async("async")
+    public void dockerSetWjCustomerByRedis(Long orderId,Long ksId) {
+
+        //鏈(鍗曚釜瀛樺叆)0鏈,1宸叉
+        getDgWjAjaxResult(orderId,ksId);
     }
 
     @Override
@@ -1282,7 +1298,7 @@
         }
     }
 
-    //宸叉
+    //宸叉(鏁翠綋瀛樺叆)
     public List<TjCustomer> getYjAjaxResult(List<Long> ksproList) {
         List<TjCustomer> customerLis = new ArrayList<>();
         LambdaQueryWrapper<TjOrderDetail> wq1 = new LambdaQueryWrapper<>();
@@ -1297,6 +1313,7 @@
                     () -> new TreeSet<>(Comparator.comparing(TjOrderDetail::getOrderId))
             ), ArrayList::new)).stream().map(TjOrderDetail::getOrderId).collect(Collectors.toList());
             for (Long orderId : orderIds) {
+
                 if (null != orderId) {
                     TjOrder order = orderService.getById(orderId);
                     if (null == order) {
@@ -1345,6 +1362,7 @@
                             for (TjOrderRemark remark : list) {
                                 TjProject byId = projectService.getById(remark.getProId());
                                 stringBuilder.append(byId.getProName()).append(";");
+                                getDgYjAjaxResult(orderId,remark.getDeptId());
                             }
                             customer.setNotCheckeds(String.valueOf(stringBuilder));
                             if (null == customer.getNotCheckeds()) customer.setNotCheckeds("鍏ㄩ儴宸叉");
@@ -1357,7 +1375,7 @@
         return customerLis;
     }
 
-    //鏈
+    //鏈(鏁翠綋瀛樺叆)
     public List<TjCustomer> getWjAjaxResult(List<Long> ksproList) {
         List<TjCustomer> customerLis = new ArrayList<>();
         LambdaQueryWrapper<TjOrderDetail> wq1 = new LambdaQueryWrapper<>();
@@ -1372,6 +1390,9 @@
                     () -> new TreeSet<>(Comparator.comparing(TjOrderDetail::getOrderId))
             ), ArrayList::new)).stream().map(TjOrderDetail::getOrderId).collect(Collectors.toList());
             for (Long orderId : orderIds) {
+//                for (Long aLong : ksproList) {
+//                    getDgWjAjaxResult(orderId,aLong);
+//                }
                 if (null != orderId) {
                     TjOrder order = orderService.getById(orderId);
                     if (null == order) {
@@ -1420,6 +1441,7 @@
                             for (TjOrderRemark remark : list) {
                                 TjProject byId = projectService.getById(remark.getProId());
                                 stringBuilder.append(byId.getProName()).append(";");
+                                getDgWjAjaxResult(orderId,remark.getDeptId());
                             }
                             customer.setNotCheckeds(String.valueOf(stringBuilder));
                             if (null == customer.getNotCheckeds()) customer.setNotCheckeds("鍏ㄩ儴宸叉");
@@ -1432,6 +1454,120 @@
         return customerLis;
     }
 
+    //宸叉(鍗曚釜瀛樺叆)0鏈,1宸叉
+    public void getDgYjAjaxResult(Long orderId,Long ksId) {
+        if (null != orderId) {
+            TjOrder order = orderService.getById(orderId);
+            if (null != order) {
+                LambdaQueryWrapper<TjOrderDetail> qww = new LambdaQueryWrapper<>();
+                qww.eq(TjOrderDetail::getOrderId, order.getOrderId());
+                qww.eq(TjOrderDetail::getTjStatus, 0);
+                qww.isNotNull(TjOrderDetail::getFlowingWaterId);
+                TjCustomer customer = tjCustomerService.getById(order.getUserId());
+                List<TjOrderDetail> lists = tjOrderDetailService.list(qww);
+                if (null == lists || lists.size() == 0) {
+                    redisCache.deleteCacheMapValue("ks"+ksId+customer.getCusId(),"1");
+                }
+                if (null != customer) {
+                    //閬嶅巻椤圭洰 鍒ゆ柇鏄惁鏈夐噸澶ч槼鎬�  鏍囪
+                    for (TjOrderDetail tjOrderDetail11 : lists) {
+                        customer.setIsPositive(tjOrderDetail11.getIsPositive());
+                        if (tjOrderDetail11.getIsPositive() == 1) {
+                            break;
+                        }
+                    }
+                    customer.setCusName(hideCusName(customer.getCusName()));
+                    customer.setCusPhone(hidePhoneNum(customer.getCusPhone()));
+                    customer.setCusIdcard(hideIdCardNum(customer.getCusIdcard()));
+                    if (order.getTjType().equals("1")) {
+                        customer.setTjType("鍥綋");
+                    }
+                    if (order.getTjType().equals("2")) {
+                        customer.setTjType("涓汉");
+                    }
+                    customer.setTjTime(order.getCreateTime());
+                    customer.setTjNumber(order.getTjNumber());
+                    customer.setTjStatus(1L);
+                    customer.setOrderId(order.getOrderId());
+                    customer.setIsHz(order.getIsHz());
+                    customer.setTjCategory(order.getTjCategory());
+                    LambdaQueryWrapper<TjOrderRemark> wq = new LambdaQueryWrapper<>();
+                    wq.eq(TjOrderRemark::getTjNumber, order.getTjNumber());
+                    wq.in(TjOrderRemark::getType, 0, 3);
+                    List<TjOrderRemark> list = orderRemarkService.list(wq);
+                    if (null != list && list.size() > 0) {
+                        StringBuilder stringBuilder = new StringBuilder();
+                        for (TjOrderRemark remark : list) {
+                            TjProject byId = projectService.getById(remark.getProId());
+                            stringBuilder.append(byId.getProName()).append(";");
+                        }
+                        customer.setNotCheckeds(String.valueOf(stringBuilder));
+                        if (null == customer.getNotCheckeds()) customer.setNotCheckeds("鍏ㄩ儴宸叉");
+                    }
+                    redisCache.setCacheMapValue("ks:"+ksId+":"+customer.getCusId(),"1",customer);
+                }
+            }
+        }
+}
+
+
+    //鏈(鍗曚釜瀛樺叆)0鏈,1宸叉
+    public void getDgWjAjaxResult(Long orderId,Long ksId) {
+                if (null != orderId) {
+                    TjOrder order = orderService.getById(orderId);
+                    if (null == order) {
+                    TjCustomer customer = tjCustomerService.getById(order.getUserId());
+                    if (null != customer) {
+                        LambdaQueryWrapper<TjOrderDetail> qww = new LambdaQueryWrapper<>();
+                        qww.eq(TjOrderDetail::getOrderId, order.getOrderId());
+                        qww.isNotNull(TjOrderDetail::getFlowingWaterId);
+                        List<TjOrderDetail> lists = tjOrderDetailService.list(qww);
+                        if (null != lists) {
+                            //閬嶅巻椤圭洰 鍒ゆ柇鏄惁鏈夐噸澶ч槼鎬�  鏍囪
+                            for (TjOrderDetail tjOrderDetail11 : lists) {
+                                customer.setIsPositive(tjOrderDetail11.getIsPositive());
+                                if (tjOrderDetail11.getIsPositive()==1){
+                                    break;
+                                }
+                            }
+                        }
+
+                        customer.setCusName(hideCusName(customer.getCusName()));
+                        customer.setCusPhone(hidePhoneNum(customer.getCusPhone()));
+                        customer.setCusIdcard(hideIdCardNum(customer.getCusIdcard()));
+
+                        if (order.getTjType().equals("1")) {
+                            customer.setTjType("鍥綋");
+                        }
+                        if (order.getTjType().equals("2")) {
+                            customer.setTjType("涓汉");
+                        }
+                        customer.setTjTime(order.getCreateTime());
+                        customer.setTjNumber(order.getTjNumber());
+                        customer.setOrderId(order.getOrderId());
+                        customer.setIsHz(order.getIsHz());
+                        customer.setTjCategory(order.getTjCategory());
+                        customer.setTjStatus(0L);
+                        LambdaQueryWrapper<TjOrderRemark> wq = new LambdaQueryWrapper<>();
+                        wq.eq(TjOrderRemark::getTjNumber, order.getTjNumber());
+                        wq.in(TjOrderRemark::getType, 0, 3);
+                        List<TjOrderRemark> list = orderRemarkService.list(wq);
+                        if (null != list && list.size() > 0) {
+                            StringBuilder stringBuilder = new StringBuilder();
+                            for (TjOrderRemark remark : list) {
+                                TjProject byId = projectService.getById(remark.getProId());
+                                stringBuilder.append(byId.getProName()).append(";");
+                            }
+                            customer.setNotCheckeds(String.valueOf(stringBuilder));
+                            if (null == customer.getNotCheckeds()) customer.setNotCheckeds("鍏ㄩ儴宸叉");
+                        }
+                        redisCache.setCacheMapValue("ks"+ksId+":"+customer.getCusId(),"0",customer);
+                    }
+                }
+        }
+    }
+
+
     //宸插
     private List<TjCustomer> getYsResult(String config) {
         List<TjOrder> orderList = null;
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/sqlserver/TjSqlController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/sqlserver/TjSqlController.java
index 66ff1df..cdb13b2 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/sqlserver/TjSqlController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/sqlserver/TjSqlController.java
@@ -2,6 +2,7 @@
 
 import com.ltkj.common.core.controller.BaseController;
 import com.ltkj.common.core.domain.AjaxResult;
+import com.ltkj.common.core.redis.RedisCache;
 import com.ltkj.common.enums.DataSourceType;
 import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
 import com.ltkj.hosp.service.*;
@@ -10,11 +11,21 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.ConvertingCursor;
+import org.springframework.data.redis.core.Cursor;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ScanOptions;
+import org.springframework.data.redis.serializer.RedisSerializer;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log;
 import static org.apache.poi.hemf.record.emfplus.HemfPlusRecordType.save;
 
 
@@ -41,6 +52,36 @@
     private LtkjHybgdService ltkjHybgdService;
     @Resource
     private LtkjHysqdService ltkjHysqdService;
+    @Autowired
+    public RedisTemplate<Object,Object> redisTemplate;
+    @Resource
+    private RedisCache redisCache;
+
+    @GetMapping("/getRedisValue")
+    @ApiOperation(value = "娴嬭瘯redis妯$硦鏌ヨ")
+    public AjaxResult getRedisValue(@RequestParam String aa) {
+        long start = System.currentTimeMillis();
+        //闇�瑕佸尮閰嶇殑key
+        ScanOptions options = ScanOptions.scanOptions()
+                //杩欓噷鎸囧畾姣忔鎵弿key鐨勬暟閲�(寰堝鍗氬鐬庤瑕佹寚瀹欼nteger.MAX_VALUE锛岃繖鏍风殑璇濊窡        keys鏈変粈涔堝尯鍒紵)
+                .count(10000)
+                .match(aa+"*").build();
+        RedisSerializer<String> redisSerializer = (RedisSerializer<String>) redisTemplate.getKeySerializer();
+        Cursor cursor = redisTemplate.executeWithStickyConnection(redisConnection -> new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize));
+        List<Object> result = new ArrayList<>();
+        while(cursor.hasNext()){
+            String s = cursor.next().toString();
+          redisCache.deleteObject(s);
+        }
+        //鍒囪杩欓噷涓�瀹氳鍏抽棴锛屽惁鍒欎細鑰楀敖杩炴帴鏁般�傛姤Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Could not get a
+        cursor.close();
+//        System.out.println(result);
+        log.info("scan鎵弿鍏辫�楁椂锛歿} ms key鏁伴噺锛歿}",System.currentTimeMillis()-start,result.size());
+        Map<String,Object>map=new HashMap<>();
+        map.put("result",result);
+        map.put("scan鎵弿鍏辫�楁椂锛歿} ms key鏁伴噺锛歿}",System.currentTimeMillis()-start+result.size());
+        return AjaxResult.success(map);
+    }
 
 
     @GetMapping("/getMiddleDetail")
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java
index bef5dce..4b94f93 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java
@@ -27,6 +27,11 @@
 import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.ConvertingCursor;
+import org.springframework.data.redis.core.Cursor;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ScanOptions;
+import org.springframework.data.redis.serializer.RedisSerializer;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -89,7 +94,8 @@
 
     @Autowired
     private ITjRulesService tjRulesService;
-
+    @Autowired
+    public RedisTemplate<Object,Object> redisTemplate;
 
 
     /**
@@ -279,14 +285,47 @@
             }
         }
         List<TjCustomer> customerLists = new ArrayList<>();
+
+//        String key="*";
+//        if(sysUser.isAdmin()){
+//            key="ks"+":*";
+//        }else {
+//            key="ks:"+ksId+":*";
+//        }
+//        ScanOptions options = ScanOptions.scanOptions()
+//                //杩欓噷鎸囧畾姣忔鎵弿key鐨勬暟閲�(寰堝鍗氬鐬庤瑕佹寚瀹欼nteger.MAX_VALUE锛岃繖鏍风殑璇濊窡        keys鏈変粈涔堝尯鍒紵)
+//                .count(10000)
+//                .match(key).build();
+//        RedisSerializer<String> redisSerializer = (RedisSerializer<String>) redisTemplate.getKeySerializer();
+//        0鏈,1宸叉
         if (type == 0) {
+//            Cursor cursor = redisTemplate.executeWithStickyConnection(redisConnection -> new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize));
+//            while(cursor.hasNext()){
+//                String s = cursor.next().toString();
+//                TjCustomer wj = redisCache.getCacheMapValue(s,"0");
+//                if(null !=wj){
+//                    customerLists.add(wj);
+//                }
+//            }
+//            //鍒囪杩欓噷涓�瀹氳鍏抽棴锛屽惁鍒欎細鑰楀敖杩炴帴鏁般�傛姤Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Could not get a
+//            cursor.close();
             customerLists = redisCache.getCacheMapValue(ksId + "ks", "wj");
         }
         if (type == 1) {
+//            Cursor cursor = redisTemplate.executeWithStickyConnection(redisConnection -> new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize));
+//            while(cursor.hasNext()){
+//                String s = cursor.next().toString();
+//                TjCustomer wj = redisCache.getCacheMapValue(s,"1");
+//                if(null !=wj){
+//                    customerLists.add(wj);
+//                }
+//            }
+//            //鍒囪杩欓噷涓�瀹氳鍏抽棴锛屽惁鍒欎細鑰楀敖杩炴帴鏁般�傛姤Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Could not get a
+//            cursor.close();
             customerLists = redisCache.getCacheMapValue(ksId + "ks", "yj");
         }
         asyncService.dockerSetCustomerLisByRedis(ksproList, String.valueOf(ksId));
-        if (customerLists != null && customerLists.size() > 0) {
+        if (null !=customerLists && customerLists.size() > 0) {
             Collections.reverse(customerLists);
             List<TjCustomer> customerList = customerLists.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
             Map<String, Object> map = new HashMap<>();
diff --git a/ltkj-admin/src/test/java/zjhTest.java b/ltkj-admin/src/test/java/zjhTest.java
index 2834fd1..8ce92c8 100644
--- a/ltkj-admin/src/test/java/zjhTest.java
+++ b/ltkj-admin/src/test/java/zjhTest.java
@@ -14,11 +14,14 @@
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.Cursor;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ScanOptions;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -45,11 +48,11 @@
 //    @Resource
 //    private ITjOrderRemarkService remarkService;
 //
-//    @Resource
-//    private RedisCache redisCache;
+    @Resource
+    private RedisCache redisCache;
 //
-//    @Autowired
-//    public RedisTemplate<String,String> redisTemplate;
+    @Autowired
+    public RedisTemplate<Object,Object> redisTemplate;
 //    @Resource
 //    private StringRedisTemplate stringRedisTemplate;
 @Resource
@@ -68,6 +71,22 @@
 //        System.out.println(dateTime1);
 //        System.out.println("=================================================");
 //        System.out.println(mallMerchantSecretKey);
+
+//        List<Object> list=new ArrayList<>();
+//        ScanOptions options = ScanOptions.scanOptions().match("cS*").build();
+//        try (Cursor<byte[]> cursor = redisTemplate.executeWithStickyConnection(redisConnection -> {
+//            return redisConnection.scan(options);
+//        })) {
+//            while (cursor.hasNext()) {
+//                byte[] keyBytes = cursor.next();
+//                String key = new String(keyBytes);
+//                // 澶勭悊鍖归厤鐨刱ey
+//                List<Object> multiCacheMapValue = redisCache.getMultiCacheMapValue(key, null);
+//                list.add(multiCacheMapValue);
+//            }
+//        }
+//        System.out.println(list);
+        System.out.println(redisCache.getMultiCacheMapValue("check",null));
 //        }
     }
 
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java
index e7d1d5d..f2c0595 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java
@@ -38,9 +38,13 @@
      void iundividualCharges(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer, SysUser sysUser);
 
 
-     //鍖荤敓妫�鏌ュ悜缂撳瓨涓坊鍔犳暟鎹�
+     //鍖荤敓妫�鏌ュ悜缂撳瓨涓坊鍔犳暟鎹�(鏁翠綋瀛樺叆)
      void dockerSetCustomerLisByRedis(List<Long> ksproList,String ksId);
 
+    //鍖荤敓妫�鏌ュ悜缂撳瓨涓坊鍔犳暟鎹�(鍗曚釜瀛樺叆)
+    void dockerSetYjCustomerByRedis(Long orderId,Long ksId);
+    void dockerSetWjCustomerByRedis(Long orderId,Long ksId);
+
      //鎬绘
      void  checkSetCustomerLisByRedis(String config);
 

--
Gitblit v1.8.0