refactor(buildpackage): 为关键方法添加同步锁和异常处理- 在 ConsignmachiningIn、ConsignmachiningInReturn、ProxyPurchaseReturn、ProxyPurchaseWarehousOrder、ProxyPurchaseWarehousWarehouse 和 SoSaleReturnPluginInitializerToB 类中,为 getSet、getSetStock 和 getSetTrade 方法添加了 ReentrantLock 同步锁
- 在上述方法中添加了 try-catch 块,用于捕获和记录异常 -这些修改旨在提高系统的稳定性和可靠性,防止并发问题,并确保异常情况得到妥善处理
This commit is contained in:
parent
e568ae8549
commit
3533460e6f
|
@ -32,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -47,6 +48,8 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
public class ConsignmachiningIn extends PluginBaseEntity {
|
||||
|
||||
private static final ReentrantLock LOCK1 = new ReentrantLock(true);
|
||||
|
||||
Logger logger = LoggerFactory.getLogger(ConsignmachiningIn.class);
|
||||
|
||||
@Autowired
|
||||
|
@ -326,10 +329,17 @@ public class ConsignmachiningIn extends PluginBaseEntity {
|
|||
* @author liuyang
|
||||
*/
|
||||
private void getSet(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoArrayList) throws Exception {
|
||||
//过滤成功的数据
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterData(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implement(stockinOrderList);
|
||||
LOCK1.lock();
|
||||
try {
|
||||
//过滤成功的数据
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterData(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implement(stockinOrderList);
|
||||
} catch (Exception e) {
|
||||
logger.error("getSet方法抛出异常", e);
|
||||
} finally {
|
||||
LOCK1.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -37,6 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -51,6 +52,8 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
public class ConsignmachiningInReturn extends PluginBaseEntity {
|
||||
|
||||
private static final ReentrantLock LOCK1 = new ReentrantLock(true);
|
||||
|
||||
Logger logger = LoggerFactory.getLogger(ConsignmachiningInReturn.class);
|
||||
|
||||
@Autowired
|
||||
|
@ -303,10 +306,17 @@ public class ConsignmachiningInReturn extends PluginBaseEntity {
|
|||
* @author liuyang
|
||||
*/
|
||||
private void getSet(List<HeaderDetailsDto> returnGoodHeaderDetailsDataDtoArrayList) throws Exception {
|
||||
//过滤成功的数据
|
||||
List<HeaderDetailsDto> headerDetailsDtos = filterData(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implement(headerDetailsDtos);
|
||||
LOCK1.lock();
|
||||
try {
|
||||
//过滤成功的数据
|
||||
List<HeaderDetailsDto> headerDetailsDtos = filterData(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implement(headerDetailsDtos);
|
||||
} catch (Exception e) {
|
||||
logger.error("getSet方法抛出异常", e);
|
||||
} finally {
|
||||
LOCK1.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -39,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -54,6 +55,8 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
public class ProxyPurchaseReturn extends PluginBaseEntity {
|
||||
|
||||
private static final ReentrantLock LOCK1 = new ReentrantLock(true);
|
||||
|
||||
Logger logger = LoggerFactory.getLogger(ProxyPurchaseReturn.class);
|
||||
|
||||
@Autowired
|
||||
|
@ -355,10 +358,17 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
|
|||
* @author liuyang
|
||||
*/
|
||||
private void getSet(List<HeaderDetailsDto> returnGoodHeaderDetailsDataDtoArrayList) throws Exception {
|
||||
//过滤成功的数据
|
||||
List<HeaderDetailsDto> headerDetailsDtos = filterData(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implement(headerDetailsDtos);
|
||||
LOCK1.lock();
|
||||
try {
|
||||
//过滤成功的数据
|
||||
List<HeaderDetailsDto> headerDetailsDtos = filterData(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implement(headerDetailsDtos);
|
||||
} catch (Exception e) {
|
||||
logger.error("getSet抛出异常", e);
|
||||
} finally {
|
||||
LOCK1.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -35,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -51,6 +52,8 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
public class ProxyPurchaseWarehousOrder extends PluginBaseEntity {
|
||||
|
||||
private static final ReentrantLock LOCK1 = new ReentrantLock(true);
|
||||
|
||||
Logger logger = LoggerFactory.getLogger(ProxyPurchaseWarehousOrder.class);
|
||||
|
||||
@Autowired
|
||||
|
@ -355,10 +358,17 @@ public class ProxyPurchaseWarehousOrder extends PluginBaseEntity {
|
|||
* @author liuyang
|
||||
*/
|
||||
private void getSet(List<OfsPoOrderData> allOfsPoOrderList) throws Exception {
|
||||
//过滤成功的数据
|
||||
List<OfsPoOrderData> ofsPoOrderDataList = filterData(allOfsPoOrderList);
|
||||
//执行推送主逻辑
|
||||
implement(ofsPoOrderDataList);
|
||||
LOCK1.lock();
|
||||
try {
|
||||
//过滤成功的数据
|
||||
List<OfsPoOrderData> ofsPoOrderDataList = filterData(allOfsPoOrderList);
|
||||
//执行推送主逻辑
|
||||
implement(ofsPoOrderDataList);
|
||||
} catch (Exception e) {
|
||||
logger.error("getSet不能为空", e);
|
||||
} finally {
|
||||
LOCK1.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -31,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -46,6 +47,8 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
public class ProxyPurchaseWarehousWarehouse extends PluginBaseEntity {
|
||||
|
||||
private static final ReentrantLock LOCK1 = new ReentrantLock(true);
|
||||
|
||||
Logger logger = LoggerFactory.getLogger(ProxyPurchaseWarehousWarehouse.class);
|
||||
|
||||
@Autowired
|
||||
|
@ -353,10 +356,17 @@ public class ProxyPurchaseWarehousWarehouse extends PluginBaseEntity {
|
|||
* @author liuyang
|
||||
*/
|
||||
private void getSet(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoArrayList) throws Exception {
|
||||
//过滤成功的数据
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterData(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implement(stockinOrderList);
|
||||
LOCK1.lock();
|
||||
try {
|
||||
//过滤成功的数据
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterData(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implement(stockinOrderList);
|
||||
} catch (Exception e) {
|
||||
logger.error("getSet抛出异常", e);
|
||||
} finally {
|
||||
LOCK1.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -46,6 +46,7 @@ import java.time.LocalDate;
|
|||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -60,6 +61,10 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
|
|||
|
||||
Logger logger = LoggerFactory.getLogger(SoSaleReturnPluginInitializerToB.class);
|
||||
|
||||
private static final ReentrantLock LOCK1 = new ReentrantLock(true);
|
||||
|
||||
private static final ReentrantLock LOCK2 = new ReentrantLock(true);
|
||||
|
||||
@Autowired
|
||||
private IBdCorpDao iBdCorpDao;
|
||||
|
||||
|
@ -335,7 +340,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
|
|||
logger.info("插件:{} (确认收入)O接口返回行数:{} 时间段:{} {}", getPluginName(), returnGoodHeaderDetailsDataDtoArrayList.size(), startTime, endTime);
|
||||
// splicingPrintingOrderNumber(returnGoodHeaderDetailsDataDtoArrayList, "tran", startTime, endTime, null);
|
||||
printOfsDocCode(returnGoodHeaderDetailsDataDtoArrayList, startTime, endTime, "确认收入");
|
||||
|
||||
|
||||
if (returnGoodHeaderDetailsDataDtoArrayList.size() > 0) {
|
||||
returnGoodHeaderDetailsDataDtoArrayList.removeIf(new Predicate<StockinOrderSearchResponse.StockinOrder>() {
|
||||
@Override
|
||||
|
@ -429,12 +434,19 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
|
|||
* @author liuyang
|
||||
*/
|
||||
private void getSetStock(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoArrayList) throws Exception {
|
||||
//保存到mysql
|
||||
batchInsert(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//过滤成功的数据
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implementStock(stockinOrderList);
|
||||
LOCK1.lock();
|
||||
try {
|
||||
//保存到mysql
|
||||
batchInsert(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//过滤成功的数据
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implementStock(stockinOrderList);
|
||||
} catch (Exception e) {
|
||||
logger.error("getSetStock方法抛出异常", e);
|
||||
} finally {
|
||||
LOCK1.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -443,12 +455,19 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
|
|||
* @author liuyang
|
||||
*/
|
||||
private void getSetTrade(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoArrayList) throws Exception {
|
||||
//保存到mysql
|
||||
batchInsert(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//过滤成功的数据
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterDataTran(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implementSuccessfulTrade(stockinOrderList);
|
||||
LOCK2.lock();
|
||||
try {
|
||||
//保存到mysql
|
||||
batchInsert(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//过滤成功的数据
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterDataTran(returnGoodHeaderDetailsDataDtoArrayList);
|
||||
//执行推送主逻辑
|
||||
implementSuccessfulTrade(stockinOrderList);
|
||||
} catch (Exception e) {
|
||||
logger.error("getSetTrade方法抛出异常", e);
|
||||
} finally {
|
||||
LOCK2.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue