导入逻辑,存到redis里

@Override
public GenerateImportDto EquipmentRecImport(List list) {
//从jwt中获取当前的userid
Long userId = 1L;
//获取到userId传入Ordertils的方法中截取判断
String projectNo = OrderUtils.getProjectNo(userId);
//将获取到的projectNo放在redis中,当做key唯一值储存->唯一性,REDIS_ORDER = “keda:import:equipType_”,项目编号
String redisKey = OrderUtils.getRedisProjectNoKey(projectNo);
String redisRecordCountKey = OrderUtils.getRedisRecordCountKey(projectNo);
//3、存储到reids中,有效期为30分钟。
Map<String, Object> RedisRecordMap = new HashMap<>(1);
//首先设置返回的错误统计为0,设置一个参数
int errorCount = 0;
//reids的原子操作
AtomicDouble totalAmount = new AtomicDouble();
for (ExcelEquipVo vo : list
) {
//获取redis自增主键
long id = redisUtils.incr(projectNo, 1);
//4.验证 设备信息
List equipmentDtos = equipmentMapper.selectAllByEquipName(vo.getEquipName());
if (equipmentDtos.size()>0) {
vo.setError(true);
vo.setVerifyResult(“设备已存在”);
} else {
vo.setError(false);
List rpList = list.stream().map(ExcelEquipVo::getEquipTypeName)
.collect(Collectors.toList());
long count = rpList.stream().distinct().count();
if (rpList.size() != count) {
vo.setError(true);
vo.setVerifyResult(“设备” + vo.getEquipTypeName() + “的记录重复”);
}
}
redisUtils.addZset(redisRecordCountKey, String.valueOf(id), id);
vo.setId(id);
RedisRecordMap.put(String.valueOf(id), vo);

    }
    redisUtils.setHashMap(redisKey, RedisRecordMap, OrderUtils.ORDER_EXPIRE);
    //redisUtils.set(redisKey, list, OrderUtils.ORDER_EXPIRE);
    redisUtils.expire(redisRecordCountKey, OrderUtils.ORDER_EXPIRE);
    //统计数据
    GenerateImportDto dto = new GenerateImportDto();
    dto.setErrorCount(errorCount);
    dto.setProjectNo(projectNo);
    dto.setTotalAmount(BigDecimal.valueOf(totalAmount.get()));
    dto.setTotalCount(list.size());
    //缓存统计数据,避免保存数据时重复统计
    String statisticsKey = OrderUtils.getRedisStaticKey(projectNo);
    redisUtils.set(statisticsKey, dto, OrderUtils.ORDER_EXPIRE);
    return dto;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值