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