diff --git a/dxhy-core/pom.xml b/dxhy-core/pom.xml
index 45cd4923..a4af582f 100644
--- a/dxhy-core/pom.xml
+++ b/dxhy-core/pom.xml
@@ -164,6 +164,10 @@
itext-asian
5.2.0
+
+ org.redisson
+ redisson-spring-boot-starter
+
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
diff --git a/dxhy-core/src/main/java/com/dxhy/core/config/RedissionConfig.java b/dxhy-core/src/main/java/com/dxhy/core/config/RedissionConfig.java
new file mode 100644
index 00000000..33478921
--- /dev/null
+++ b/dxhy-core/src/main/java/com/dxhy/core/config/RedissionConfig.java
@@ -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);
+// }
+//}
+//
diff --git a/dxhy-core/src/main/java/com/dxhy/core/job/service/impl/InvoiceInterfaceServiceImpl.java b/dxhy-core/src/main/java/com/dxhy/core/job/service/impl/InvoiceInterfaceServiceImpl.java
index 841e44f5..c62e119f 100644
--- a/dxhy-core/src/main/java/com/dxhy/core/job/service/impl/InvoiceInterfaceServiceImpl.java
+++ b/dxhy-core/src/main/java/com/dxhy/core/job/service/impl/InvoiceInterfaceServiceImpl.java
@@ -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 = "collect_invoice_";
+
+ private static final int MAX_SIZE = 1000;
+
@Value("${jxjk.collectUrl}")
private String collectUrl;
@Value("${jxjk.invoiceGet}")
@@ -644,6 +657,9 @@ public class InvoiceInterfaceServiceImpl implements InvoiceInterfaceService {
String company = tDxRecordInvoiceJobDao.findCompany(taxno);
List logList = new ArrayList<>();
for (InvoiceSelectInfo invoiceSelectInfo : invoicesList) {
+ //加分布式锁
+// String lockKey = REDIS_KEY + invoiceSelectInfo.getUuid();
+// RLock lock = redisson.getLock(lockKey);
invoiceSelectInfo.setUuid(invoiceSelectInfo.getInvoiceCode() + invoiceSelectInfo.getInvoiceNo());
if ("1".equals(invoiceSelectInfo.getLegalizeState())) {
//认证处理状态 0-未认证 1-已勾选未确认,2已确认 3 已发送认证 4 认证成功 5 认证失败
@@ -651,119 +667,132 @@ public class InvoiceInterfaceServiceImpl implements InvoiceInterfaceService {
} else {
invoiceSelectInfo.setAuthStatus("0");
}
- // 判断库里是否已经存在,存在则只更新发票状态,状态更新时间,认证状态以及相关字段更新
- DynamicContextHolder.push(db + DbConstant.BUSINESS_READ);
- TDxRecordInvoiceJobEntity entity = tDxRecordInvoiceJobDao
- .findInvoiceByUUid(invoiceSelectInfo.getUuid());
- if (entity != null) {
- boolean flag = false;
- if (StringUtils.isBlank(entity.getCheckCode())
- && StringUtils.isNotBlank(invoiceSelectInfo.getCheckCode())) {
- entity.setCheckCode(invoiceSelectInfo.getCheckCode());
- entity.setCheckDate(new Date());
- flag = true;
- }
- if (!entity.getInvoiceStatus().equals(invoiceSelectInfo.getInvoiceStatus())) {
- entity.setInvoiceStatus(invoiceSelectInfo.getInvoiceStatus());
- entity.setStatusUpdateDate(new Date());
- flag = true;
- }
- if ("0".equals(entity.getRzhYesorno())
- && !entity.getRzhYesorno().equals(invoiceSelectInfo.getLegalizeState())) {
- if ("1".equals(invoiceSelectInfo.getRzlx())) {
- entity.setRzhYesorno(invoiceSelectInfo.getLegalizeState());
- entity.setRzhBelongDate(invoiceSelectInfo.getLegalizeBlongDate());
- entity.setRzlx(invoiceSelectInfo.getRzlx());
- entity.setRzhType(invoiceSelectInfo.getLegalizeType());
- entity.setSfygx("1");
- if (StringUtils.isNotBlank(invoiceSelectInfo.getLegalizeDate())) {
- SimpleDateFormat sim = new SimpleDateFormat("yyyyMMdd");
- entity.setRzhDate(sim.parse(invoiceSelectInfo.getLegalizeDate()));
- }
- if ("1".equals(invoiceSelectInfo.getLegalizeState())) {
- entity.setAuthStatus("4");
- } else {
- entity.setAuthStatus("0");
- }
- entity.setBdkStatus("1");
- } else if ("4".equals(invoiceSelectInfo.getRzlx())) {
- entity.setRzhYesorno("2");
- entity.setRzhBelongDate(invoiceSelectInfo.getLegalizeBlongDate());
- entity.setRzlx(invoiceSelectInfo.getRzlx());
- entity.setRzhType(invoiceSelectInfo.getLegalizeType());
- entity.setSfygx("1");
- if (StringUtils.isNotBlank(invoiceSelectInfo.getLegalizeDate())) {
- SimpleDateFormat sim = new SimpleDateFormat("yyyyMMdd");
- entity.setRzhDate(sim.parse(invoiceSelectInfo.getLegalizeDate()));
+ try {
+// boolean isLock = lock.tryLock();
+
+// if(!isLock){
+// log.info("当前已有线程获取到锁");
+// }else {
+ // 判断库里是否已经存在,存在则只更新发票状态,状态更新时间,认证状态以及相关字段更新
+ DynamicContextHolder.push(db + DbConstant.BUSINESS_READ);
+ TDxRecordInvoiceJobEntity entity = tDxRecordInvoiceJobDao.findInvoiceByUUid(invoiceSelectInfo.getUuid());
+ if (entity != null) {
+ boolean flag = false;
+ if (StringUtils.isBlank(entity.getCheckCode())
+ && StringUtils.isNotBlank(invoiceSelectInfo.getCheckCode())) {
+ entity.setCheckCode(invoiceSelectInfo.getCheckCode());
+ entity.setCheckDate(new Date());
+ flag = true;
+ }
+ if (!entity.getInvoiceStatus().equals(invoiceSelectInfo.getInvoiceStatus())) {
+ entity.setInvoiceStatus(invoiceSelectInfo.getInvoiceStatus());
+ entity.setStatusUpdateDate(new Date());
+ flag = true;
+ }
+ if ("0".equals(entity.getRzhYesorno())
+ && !entity.getRzhYesorno().equals(invoiceSelectInfo.getLegalizeState())) {
+ if ("1".equals(invoiceSelectInfo.getRzlx())) {
+ entity.setRzhYesorno(invoiceSelectInfo.getLegalizeState());
+ entity.setRzhBelongDate(invoiceSelectInfo.getLegalizeBlongDate());
+ entity.setRzlx(invoiceSelectInfo.getRzlx());
+ entity.setRzhType(invoiceSelectInfo.getLegalizeType());
+ entity.setSfygx("1");
+ if (StringUtils.isNotBlank(invoiceSelectInfo.getLegalizeDate())) {
+ SimpleDateFormat sim = new SimpleDateFormat("yyyyMMdd");
+ entity.setRzhDate(sim.parse(invoiceSelectInfo.getLegalizeDate()));
+ }
+ if ("1".equals(invoiceSelectInfo.getLegalizeState())) {
+ entity.setAuthStatus("4");
+ } else {
+ entity.setAuthStatus("0");
+ }
+ entity.setBdkStatus("1");
+ } else if ("4".equals(invoiceSelectInfo.getRzlx())) {
+ entity.setRzhYesorno("2");
+ entity.setRzhBelongDate(invoiceSelectInfo.getLegalizeBlongDate());
+ entity.setRzlx(invoiceSelectInfo.getRzlx());
+ entity.setRzhType(invoiceSelectInfo.getLegalizeType());
+ entity.setSfygx("1");
+ if (StringUtils.isNotBlank(invoiceSelectInfo.getLegalizeDate())) {
+ SimpleDateFormat sim = new SimpleDateFormat("yyyyMMdd");
+ entity.setRzhDate(sim.parse(invoiceSelectInfo.getLegalizeDate()));
+ }
+ if ("1".equals(invoiceSelectInfo.getLegalizeState())) {
+ entity.setAuthStatus("4");
+ } else {
+ entity.setAuthStatus("0");
+ }
+ entity.setBdkStatus("2");
}
- if ("1".equals(invoiceSelectInfo.getLegalizeState())) {
- entity.setAuthStatus("4");
- } else {
- entity.setAuthStatus("0");
+ flag = true;
+
+ } else if (!"0".equals(entity.getRzhYesorno())
+ && !"1".equals(invoiceSelectInfo.getLegalizeState())) {
+ entity.setRzhYesorno("0");
+ entity.setRzhBelongDate(null);
+ entity.setRzlx("0");
+ entity.setRzhType(null);
+ entity.setRzhDate(null);
+ entity.setAuthStatus("0");
+ entity.setBdkStatus("0");
+ entity.setSfygx("0");
+ flag = true;
+ }
+ //TODO 这块业务不理解??
+ if ("1".equals(entity.getSourceSystem()) && "0".equals(entity.getCollectStatus())) {
+ entity.setCollectStatus("1");
+ entity.setCollectFrom("0");
+ entity.setCollectDate(new Date());
+ entity.setPoolStatus("1");
+ entity.setInPoolReason("数据重复");
+ flag = true;
+ }
+ if (flag) {
+ DynamicContextHolder.push(db + DbConstant.BUSINESS_WRITE);
+ if (StringUtils.isBlank(entity.getInvoiceCode())) {
+ entity.setInvoiceCode("");
}
- entity.setBdkStatus("2");
+ tDxRecordInvoiceJobDao.updateInvoice(entity, taxno);
}
- flag = true;
-
- } else if (!"0".equals(entity.getRzhYesorno())
- && !"1".equals(invoiceSelectInfo.getLegalizeState())) {
- entity.setRzhYesorno("0");
- entity.setRzhBelongDate(null);
- entity.setRzlx("0");
- entity.setRzhType(null);
- entity.setRzhDate(null);
- entity.setAuthStatus("0");
- entity.setBdkStatus("0");
- entity.setSfygx("0");
- flag = true;
- }
- //TODO 这块业务不理解??
- if ("1".equals(entity.getSourceSystem()) && "0".equals(entity.getCollectStatus())) {
- entity.setCollectStatus("1");
- entity.setCollectFrom("0");
- entity.setCollectDate(new Date());
- entity.setPoolStatus("1");
- entity.setInPoolReason("数据重复");
- flag = true;
- }
- if (flag) {
- DynamicContextHolder.push(db + DbConstant.BUSINESS_WRITE);
- if (StringUtils.isBlank(entity.getInvoiceCode())) {
- entity.setInvoiceCode("");
+ // 艺龙推送数据
+ if (yLcompany.equals(company)) {
+ DynamicContextHolder.push(db + DbConstant.BUSINESS_READ);
+ InvoiceScanEntity selectSign = tDxRecordInvoiceJobDao
+ .selectByScan(entity.getInvoiceCode() + entity.getInvoiceNo(), dxhyAdmin);
+ if (selectSign != null && "1".equals(selectSign.getQsStatus())) {
+ String record = JSON.toJSONString(entity);
+ sender.sendToStatus(Base64.encode(record));
+ }
}
- tDxRecordInvoiceJobDao.updateInvoice(entity, taxno);
- }
- // 艺龙推送数据
- if (yLcompany.equals(company)) {
- DynamicContextHolder.push(db + DbConstant.BUSINESS_READ);
- InvoiceScanEntity selectSign = tDxRecordInvoiceJobDao
- .selectByScan(entity.getInvoiceCode() + entity.getInvoiceNo(), dxhyAdmin);
- if (selectSign != null && "1".equals(selectSign.getQsStatus())) {
- String record = JSON.toJSONString(entity);
- sender.sendToStatus(Base64.encode(record));
+ } else {
+ if (StringUtils.isBlank(invoiceSelectInfo.getLegalizeDate())) {
+ invoiceSelectInfo.setLegalizeDate(null);
}
+ TDxRecordInvoiceJobEntity record = exchangePo2Entity(invoiceSelectInfo);
+ record.setCompany(company);
+ record.setCollectStatus("1");
+ record.setCollectFrom("0");
+ record.setCollectDate(new Date());
+ record.setPoolStatus("0");
+ DynamicContextHolder.push(db + DbConstant.BUSINESS_WRITE);
+ tDxRecordInvoiceJobDao.insert(record);
}
- } else {
- if (StringUtils.isBlank(invoiceSelectInfo.getLegalizeDate())) {
- invoiceSelectInfo.setLegalizeDate(null);
- }
- TDxRecordInvoiceJobEntity record = exchangePo2Entity(invoiceSelectInfo);
- record.setCompany(company);
- record.setCollectStatus("1");
- record.setCollectFrom("0");
- record.setCollectDate(new Date());
- record.setPoolStatus("0");
- DynamicContextHolder.push(db + DbConstant.BUSINESS_WRITE);
- tDxRecordInvoiceJobDao.insert(record);
+ InvoiceLog invoiceLog = new InvoiceLog();
+ invoiceLog.setInvoiceCode(invoiceSelectInfo.getInvoiceCode());
+ invoiceLog.setInvoiceNo(invoiceSelectInfo.getInvoiceNo());
+ invoiceLog.setType("1");
+ invoiceLog.setInputStatus("0");
+ invoiceLog.setCreateDate(new Date());
+ invoiceLog.setInputName("系统自动");
+ logList.add(invoiceLog);
+// }
+ }catch (Exception e) {
+ e.printStackTrace();
}
- InvoiceLog invoiceLog = new InvoiceLog();
- invoiceLog.setInvoiceCode(invoiceSelectInfo.getInvoiceCode());
- invoiceLog.setInvoiceNo(invoiceSelectInfo.getInvoiceNo());
- invoiceLog.setType("1");
- invoiceLog.setInputStatus("0");
- invoiceLog.setCreateDate(new Date());
- invoiceLog.setInputName("系统自动");
- logList.add(invoiceLog);
+// finally {
+// //关锁
+// lock.unlock();
+// }
}
httpLog.setStatus("1");
httpLog.setTotal(total);
diff --git a/dxhy-core/src/main/java/com/dxhy/core/task/SdnyClientTask.java b/dxhy-core/src/main/java/com/dxhy/core/task/SdnyClientTask.java
index dad62fa6..eb490fe9 100644
--- a/dxhy-core/src/main/java/com/dxhy/core/task/SdnyClientTask.java
+++ b/dxhy-core/src/main/java/com/dxhy/core/task/SdnyClientTask.java
@@ -37,6 +37,9 @@ public class SdnyClientTask extends AbstractController {
@Value("${sdny.snYxUrl}")
private String snYxUrl;
+ @Value("${sdny.client}")
+ private String client;
+
@Value("${po.userName}")
private String userName;
@@ -77,43 +80,45 @@ public class SdnyClientTask extends AbstractController {
scheduleJobEntity.setJobStatus("1");
DynamicContextHolder.push(DbConstant.BASICS_WRITE);
scheduleJobService.updateById(scheduleJobEntity);
+ long startTime = System.currentTimeMillis();
+ List list = new ArrayList<>();
// 准备请求参数
// 需判断 设置不认证状态
-
- List list = new ArrayList<>();
- long startTime = System.currentTimeMillis();
- SNSAPObject object = new SNSAPObject();
- object.setSYSID("FPXT");
- object.setIFYWID("FI846");
- object.setBSKEY(UUID.randomUUID().toString().replace("-", ""));
- object.setZFILED5("200");
- object.setZDATA("");
-
- //推送到SAP
- log.info("推送山能数据:{}", JSONObject.toJSONString(object));
- JSONObject request = new JSONObject();
- request.put("IS_INPUT", object);
-
- log.info("{}获取公司client入参:{}", LOGGER_MSG, request.toJSONString());
- String result = HttpUtils.sendPo(snYxUrl, request.toJSONString(), userName, password);
- log.info("{}获取公司client出参:{}", LOGGER_MSG, result);
- PoCommonResponseParam poCommonResponseParam = JsonUtils.getInstance().parseObject(result, PoCommonResponseParam.class);
- EsOutput es_output = poCommonResponseParam.getES_OUTPUT();
- String ztype = es_output.getZTYPE();
- String zmessage = es_output.getZMESSAGE();
- Object zdata = es_output.getZDATA();
- if ("s".equals(ztype)) {
- List