ariesy 采集入库数据重复

release
yefei 2 years ago
parent 545e942b89
commit 87ccf9689e
  1. 4
      dxhy-core/pom.xml
  2. 33
      dxhy-core/src/main/java/com/dxhy/core/config/RedissionConfig.java
  3. 24
      dxhy-core/src/main/java/com/dxhy/core/job/service/impl/InvoiceInterfaceServiceImpl.java

@ -164,6 +164,10 @@
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

@ -0,0 +1,33 @@
package com.dxhy.core.config;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedissionConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private String port;
@Value("${spring.redis.password}")
private String redisPassword;
@Bean
public RedissonClient getRedisson(){
Config config = new Config();
//单机模式 依次设置redis地址和密码
config.useSingleServer()
.setAddress("redis://" + host + ":" + port)
.setPassword(redisPassword);
return Redisson.create(config);
}
}

@ -14,7 +14,10 @@ import javax.crypto.spec.SecretKeySpec;
import com.dxhy.core.job.thread.InvoiceParseHandle;
import org.apache.commons.lang.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
@ -72,6 +75,16 @@ public class InvoiceInterfaceServiceImpl implements InvoiceInterfaceService {
@Resource
private Sender sender;
@Resource
private StringRedisTemplate stringRedisTemplate;
@Resource
private RedissonClient redisson;
private static final String REDIS_KEY = "redis_oa_01";
private static final int MAX_SIZE = 1000;
@Value("${jxjk.collectUrl}")
private String collectUrl;
@Value("${jxjk.invoiceGet}")
@ -651,10 +664,17 @@ public class InvoiceInterfaceServiceImpl implements InvoiceInterfaceService {
} else {
invoiceSelectInfo.setAuthStatus("0");
}
//加分布式锁
String lockKey = invoiceSelectInfo.getUuid();
RLock lock = redisson.getLock(lockKey);
lock.lock();
stringRedisTemplate.opsForValue().set(REDIS_KEY, String.valueOf(0));
// 判断库里是否已经存在,存在则只更新发票状态,状态更新时间,认证状态以及相关字段更新
DynamicContextHolder.push(db + DbConstant.BUSINESS_READ);
TDxRecordInvoiceJobEntity entity = tDxRecordInvoiceJobDao
.findInvoiceByUUid(invoiceSelectInfo.getUuid());
TDxRecordInvoiceJobEntity entity = tDxRecordInvoiceJobDao.findInvoiceByUUid(invoiceSelectInfo.getUuid());
if (entity != null) {
boolean flag = false;
if (StringUtils.isBlank(entity.getCheckCode())

Loading…
Cancel
Save