diff --git a/nflg_project_dev/material/src/main/java/com/nflg/product/material/config/RedisTemplateConfig.java b/nflg_project_dev/material/src/main/java/com/nflg/product/material/config/RedisTemplateConfig.java new file mode 100644 index 00000000..0298dff2 --- /dev/null +++ b/nflg_project_dev/material/src/main/java/com/nflg/product/material/config/RedisTemplateConfig.java @@ -0,0 +1,28 @@ +package com.nflg.product.material.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@Configuration +public class RedisTemplateConfig { + + /** + * redis 解决key和value前多出一段xACxEDx00 + * c.r. https://blog.csdn.net/u010667710/article/details/131452820 + * + * @param redisTemplate + * @return + */ + @Bean + public RedisTemplate redisStringTemplate(RedisTemplate redisTemplate) { + StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); + redisTemplate.setKeySerializer(stringRedisSerializer); + // 如果手动将Value转换成了JSON,就不要再用JSON序列化器了。 + // redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class)); + redisTemplate.setValueSerializer(stringRedisSerializer); + return redisTemplate; + } + +} diff --git a/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/MaterialUpdateBillService.java b/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/MaterialUpdateBillService.java index 425cfe3b..552aabcf 100644 --- a/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/MaterialUpdateBillService.java +++ b/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/MaterialUpdateBillService.java @@ -405,14 +405,12 @@ public class MaterialUpdateBillService extends ServiceImpl excelContext = EecExcelUtil.getExcelContext(file.getInputStream(), MaterialStateUpExcelDTO.class); - if (CollectionUtil.isNotEmpty(excelContext) && excelContext.size() > 100) { - redisTemplate.opsForValue().set(buildKey(userCode + "1:updateBatchImport"), file.getOriginalFilename()); - redisTemplate.opsForValue().set(buildKey(userCode + "2:updateBatchImport"), file.getOriginalFilename()); - redisTemplate.opsForValue().set(buildKey(userCode + "3:updateBatchImport"), file.getOriginalFilename()); + if (CollectionUtil.isNotEmpty(excelContext) && excelContext.size() > 1000) { + redisTemplate.opsForValue().set(buildKey(userCode + ":updateBatchImport"), file.getOriginalFilename()); // 大数据量,子线程分批次提交OA(每批1000条),主线程提前返回结果给前端 CompletableFuture task1 = CompletableFuture.supplyAsync(() -> { long startTime = System.currentTimeMillis(); - List> lists = Lists.partition(excelContext, 100); + List> lists = Lists.partition(excelContext, 1000); lists.forEach(items -> this.handleImportDataForState(items, applyDeptName, deptEnt, realName, userCode)); long endTime = System.currentTimeMillis(); log.info("物料变更批量导入耗时(ms): {}", endTime - startTime); @@ -435,6 +433,7 @@ public class MaterialUpdateBillService extends ServiceImpl excelContext = EecExcelUtil.getExcelContext(file.getInputStream(), TwentyMaterialTemplateExcelDTO.class); if (CollectionUtil.isNotEmpty(excelContext) && excelContext.size() > 1000) { + redisTemplate.opsForValue().set(buildKey(userCode + ":updateBatchImport"), file.getOriginalFilename()); // 大数据量,子线程分批次提交OA(每批1000条),主线程提前返回结果给前端 CompletableFuture task1 = CompletableFuture.supplyAsync(() -> { long startTime = System.currentTimeMillis(); @@ -442,11 +441,13 @@ public class MaterialUpdateBillService extends ServiceImpl this.handleImportDataForSummary(items, applyDeptName, deptEnt, realName, userCode)); long endTime = System.currentTimeMillis(); log.info("物料变更批量导入耗时(ms): {}", endTime - startTime); + redisTemplate.delete(buildKey(userCode + ":updateBatchImport")); return 1; }); task1.exceptionally(ex -> { // 异常处理器,打印异常信息并返回默认值 log.error("物料变更批量导入异常: " + ex.getMessage()); + redisTemplate.delete(buildKey(userCode + ":updateBatchImport")); return -1; }); // task1.join(); // 阻塞获取结果