diff --git a/pom.xml b/pom.xml
index 40a8e590..b1678a2d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -153,11 +153,11 @@
8.0.15
-
-
-
-
-
+
+ com.microsoft.sqlserver
+ mssql-jdbc
+ 8.4.1.jre8
+
org.springframework
diff --git a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
index 386267fa..0a5f7a42 100644
--- a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
+++ b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
@@ -3,12 +3,16 @@ package com.qs.serve.common.framework.manager;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.config.DevEnvironmentConfig;
+import com.qs.serve.common.framework.redis.RedisService;
+import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.common.util.SpringUtils;
import com.qs.serve.modules.data.entity.DataAffairCommit;
import com.qs.serve.modules.data.service.DataAffairCommitService;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
+import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
+import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysOperationLog;
import com.qs.serve.modules.sys.mapper.SysOperationLogMapper;
import com.qs.serve.modules.tbs.entity.TbsBudget;
@@ -30,6 +34,9 @@ import org.springframework.scheduling.annotation.Async;
import java.math.BigDecimal;
import java.util.TimerTask;
+import java.util.concurrent.TimeUnit;
+
+import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_CUS_AMOUNT;
/**
* 异步工厂
@@ -53,6 +60,41 @@ public class AsyncFactory {
};
}
+ /**
+ * 异步保存政策状态
+ * @param userId
+ * @param supplierCode
+ * @return
+ */
+ public static TimerTask initCustomerPrice(String userId,String supplierCode) {
+ return new TimerTask() {
+ @Override
+ public void run() {
+ String lockKey = "customer_price_lock:"+userId+":"+supplierCode;
+ String priceDataKey = "customer_price_data:"+userId;
+ RedisService redisService = SpringUtils.getBean(RedisService.class);
+ redisService.set(lockKey,1,30,TimeUnit.SECONDS);
+ log.debug("获取客户金额,cusCode:{}",supplierCode);
+ //请求获取金额
+ SeeYonRequestBaseService seeYonRequestService = SpringUtils.getBean(SeeYonRequestBaseService.class);
+ R reqResult = seeYonRequestService.getBase(ERP_CUS_AMOUNT+"?supplierCode="+supplierCode,"获取客户["+supplierCode+"]金额");
+ if(reqResult==null || !reqResult.getStatus().equals(200)){
+ //有错误退出
+ log.warn("获取客户金额失败,cusCode:{}",supplierCode);
+ redisService.set(lockKey,0);
+ return;
+ }
+ String amount = reqResult.getData()==null?"0":reqResult.getData();
+ //数据格式:supplierCode_&_amount 如 A235654_&_612.00
+ String value = supplierCode+"_&_"+amount;
+ //缓存15分钟
+ log.debug("获取客户金额成功,cusCode:{},缓存15分钟",supplierCode);
+ redisService.set(priceDataKey,value,15, TimeUnit.MINUTES);
+ redisService.set(lockKey,0);
+ }
+ };
+ }
+
/**
* 异步保存政策状态
* @param policyId
@@ -94,7 +136,7 @@ public class AsyncFactory {
try {
AuthContextUtils.setTenant("001");
log.debug("--------------------------SubmitBudgetApply CallbackTimer Sleep Start :{}------------------------------",budgetId);
- Thread.sleep(7*1000);
+ Thread.sleep(3*1000);
TbsBudgetChangeOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetChangeOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId);
@@ -175,7 +217,7 @@ public class AsyncFactory {
try {
AuthContextUtils.setTenant("001");
log.debug("--------------------------submitBudgetApply CallbackTimer Sleep Start :{}------------------------------",budgetId);
- Thread.sleep(7*1000);
+ Thread.sleep(3*1000);
TbsBudgetApplyOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetApplyOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId);
if(summeryResult.equals(TbsCostApplyOperationServiceImpl.SummeryState_Success)){
@@ -188,7 +230,7 @@ public class AsyncFactory {
}
TbsAffairCommitBo doParam = new TbsAffairCommitBo();
doParam.setTargetId(budgetId);
- if (state==null||state==1){
+ if (state == 1){
applyOperationService.doFinished(doParam);
}else if (state==2){
applyOperationService.doCommitBacked(budgetId);
diff --git a/src/main/java/com/qs/serve/common/util/JdbcUtil.java b/src/main/java/com/qs/serve/common/util/JdbcUtil.java
new file mode 100644
index 00000000..1a7251e7
--- /dev/null
+++ b/src/main/java/com/qs/serve/common/util/JdbcUtil.java
@@ -0,0 +1,107 @@
+package com.qs.serve.common.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.StringUtils;
+
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 原生JDBC工具类
+ * @Author JcYen
+ * @Date 2021/6/4
+ */
+@Slf4j
+public class JdbcUtil {
+
+ private static final String[] FILTER_WORD = new String[]{"truncate","create","alter","eval","delete","sp_password"};
+
+ /**
+ * 执行SQL(为安全,拦截delete语句)
+ * @param username
+ * @param password
+ * @param url
+ * @param driverName
+ * @param sql
+ * @return
+ */
+ public static List