refactor(sales): 优化售后订单查询逻辑
- 去除无效的售后订单号,避免不必要的查询 - 优化批量查询逻辑,提高查询效率 -修复可能的空指针异常,提升代码稳定性
This commit is contained in:
parent
f7210e574d
commit
29a17362b2
|
@ -1664,26 +1664,51 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchDataList = new ArrayList<>();
|
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchDataList = new ArrayList<>();
|
||||||
if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
||||||
try {
|
try {
|
||||||
List<List<StockinOrderSearchResponse.StockinOrder>> splitListByCount = SplitListByCountUtil.splitListByCount(returnGoodHeaderDetailsDataDtoList1, 50);
|
//完成去重
|
||||||
for (int i = 0; i < splitListByCount.size(); i++) {
|
Set<String> refOrderCodeSet = new HashSet<>();
|
||||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = splitListByCount.get(i);
|
// List<List<StockinOrderSearchResponse.StockinOrder>> splitListByCount = SplitListByCountUtil.splitListByCount(returnGoodHeaderDetailsDataDtoList1, 50);
|
||||||
//50个原始一个批次进行分割
|
// for (int i = 0; i < splitListByCount.size(); i++) {
|
||||||
StringBuffer idStr = new StringBuffer();
|
// List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = splitListByCount.get(i);
|
||||||
for (int j = 0; j < stockinOrderList.size(); j++) {
|
// //50个原始一个批次进行分割
|
||||||
StockinOrderSearchResponse.StockinOrder stockinOrder = stockinOrderList.get(j);
|
// StringBuffer idStr = new StringBuffer();
|
||||||
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
// for (int j = 0; j < stockinOrderList.size(); j++) {
|
||||||
// List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
// StockinOrderSearchResponse.StockinOrder stockinOrder = stockinOrderList.get(j);
|
||||||
idStr.append(header.getRefOrderCode());
|
// StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||||
idStr.append(",");
|
//// List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||||
|
// idStr.append(header.getRefOrderCode());
|
||||||
|
// idStr.append(",");
|
||||||
|
// }
|
||||||
|
// String idsStr = idStr.substring(0, idStr.length() - 1);
|
||||||
|
//
|
||||||
|
// QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
||||||
|
// queryOfsSoSaleOutVo.setCode(idsStr);
|
||||||
|
// afterSalesOrderUtil.getBatchOfsRertunOrder(queryOfsSoSaleOutVo, rerturnGoodsOrderSearchDataList, 1L);
|
||||||
|
// }
|
||||||
|
//已经和万万确认,售后入库单明细行不会有合单的情况
|
||||||
|
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
||||||
|
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
||||||
|
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||||
|
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||||
|
String refOrderCode = header.getRefOrderCode();
|
||||||
|
if (refOrderCode != null && !"".equals(refOrderCode.trim())) {
|
||||||
|
refOrderCodeSet.add(refOrderCode.trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (refOrderCodeSet.size() > 0) {
|
||||||
|
List<String> stringList = refOrderCodeSet.stream().collect(Collectors.toList());
|
||||||
|
List<List<String>> lists = SplitListByCountUtil.splitListByCount(stringList, 100);
|
||||||
|
for (int i = 0; i < lists.size(); i++) {
|
||||||
|
List<String> strings = lists.get(i);
|
||||||
|
String result = strings.stream().map(s -> s.trim()).collect(Collectors.joining(","));
|
||||||
|
if (result != null && result.length() > 0) {
|
||||||
|
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
||||||
|
queryOfsSoSaleOutVo.setCode(result);
|
||||||
|
afterSalesOrderUtil.getBatchOfsRertunOrder(queryOfsSoSaleOutVo, rerturnGoodsOrderSearchDataList, 1L);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
String idsStr = idStr.substring(0, idStr.length() - 1);
|
|
||||||
|
|
||||||
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
|
||||||
queryOfsSoSaleOutVo.setCode(idsStr);
|
|
||||||
afterSalesOrderUtil.getBatchOfsRertunOrder(queryOfsSoSaleOutVo, rerturnGoodsOrderSearchDataList, 1L);
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("批量查询售后订单", e);
|
logger.error("批量查询关联售后订单抛出异常", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rerturnGoodsOrderSearchDataList;
|
return rerturnGoodsOrderSearchDataList;
|
||||||
|
@ -1699,17 +1724,32 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
private void findAfterSalesOrder(List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchDataList, List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) throws Exception {
|
private void findAfterSalesOrder(List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchDataList, List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) throws Exception {
|
||||||
if (rerturnGoodsOrderSearchDataList != null && rerturnGoodsOrderSearchDataList.size() > 0 && returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
if (rerturnGoodsOrderSearchDataList != null && rerturnGoodsOrderSearchDataList.size() > 0 && returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
||||||
try {
|
try {
|
||||||
|
//如果id为空,则这里会报错,所以把id设置为""
|
||||||
|
rerturnGoodsOrderSearchDataList.forEach(dto -> {
|
||||||
|
if (dto.getHeader() != null && dto.getHeader().getId() == null) {
|
||||||
|
dto.getHeader().setId("");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Map<String, RerturnGoodsOrderSearchData> collect = rerturnGoodsOrderSearchDataList.stream().collect(Collectors.toMap(dto -> dto.getHeader().getId(), dto -> dto));
|
||||||
|
|
||||||
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
||||||
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
||||||
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||||
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||||
|
|
||||||
Assert.notNull(header.getId(), "OFS售后入库单主键不能为空!");
|
// Assert.notNull(header.getId(), "OFS售后入库单主键不能为空!");
|
||||||
for (int j = 0; j < rerturnGoodsOrderSearchDataList.size(); j++) {
|
// for (int j = 0; j < rerturnGoodsOrderSearchDataList.size(); j++) {
|
||||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = rerturnGoodsOrderSearchDataList.get(j);
|
// RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = rerturnGoodsOrderSearchDataList.get(j);
|
||||||
RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData.getHeader();
|
// RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData.getHeader();
|
||||||
List<RerturnGoodsOrderSearchDetails> details1 = rerturnGoodsOrderSearchData.getDetails();
|
// List<RerturnGoodsOrderSearchDetails> details1 = rerturnGoodsOrderSearchData.getDetails();
|
||||||
if (header.getRefOrderId().equals(header1.getId())) {
|
// if (header.getRefOrderId().equals(header1.getId())) {
|
||||||
|
// header.setRerturnGoodsOrderSearchData(rerturnGoodsOrderSearchData);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
String id = header.getId();
|
||||||
|
if (id != null && !"".equals(id)) {
|
||||||
|
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = collect.get(id);
|
||||||
|
if (rerturnGoodsOrderSearchData != null) {
|
||||||
header.setRerturnGoodsOrderSearchData(rerturnGoodsOrderSearchData);
|
header.setRerturnGoodsOrderSearchData(rerturnGoodsOrderSearchData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1749,7 +1789,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过售后订单,匹配OFS销售订单
|
* 通过售后入库单对应的售后订单,查询OFS销售订单
|
||||||
*
|
*
|
||||||
* @param returnGoodHeaderDetailsDataDtoList1 OFS售后入库单集合
|
* @param returnGoodHeaderDetailsDataDtoList1 OFS售后入库单集合
|
||||||
* @author liuyang
|
* @author liuyang
|
||||||
|
@ -1759,29 +1799,60 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
|
|
||||||
if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
||||||
try {
|
try {
|
||||||
//每50个作为一批,拆分
|
Set<String> refOrderCodeSet = new HashSet<>();
|
||||||
List<List<StockinOrderSearchResponse.StockinOrder>> splitListByCount = SplitListByCountUtil.splitListByCount(returnGoodHeaderDetailsDataDtoList1, 50);
|
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
||||||
for (int i = 0; i < splitListByCount.size(); i++) {
|
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
||||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = splitListByCount.get(i);
|
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||||
|
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||||
StringBuffer codes = new StringBuffer();
|
if (header.getRerturnGoodsOrderSearchData() != null) {
|
||||||
for (int j = 0; j < stockinOrderList.size(); j++) {
|
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header.getRerturnGoodsOrderSearchData();//OFS售后入库单对应的「售后订单」
|
||||||
StockinOrderSearchResponse.StockinOrder stockinOrder = stockinOrderList.get(j);
|
RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData.getHeader();
|
||||||
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
List<RerturnGoodsOrderSearchDetails> details1 = rerturnGoodsOrderSearchData.getDetails();
|
||||||
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
//得到「售后订单」关联的销售订单号
|
||||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData1 = header.getRerturnGoodsOrderSearchData();//OFS售后订单
|
if (header1.getRefOrderCode() != null && !"".equals(header1.getRefOrderCode())) {
|
||||||
if (rerturnGoodsOrderSearchData1 != null) {
|
refOrderCodeSet.add(header1.getRefOrderCode().trim());
|
||||||
RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData1.getHeader();
|
|
||||||
List<RerturnGoodsOrderSearchDetails> details1 = rerturnGoodsOrderSearchData1.getDetails();
|
|
||||||
codes.append(header1.getRefOrderCode());
|
|
||||||
codes.append(",");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String codesStr = codes.substring(0, codes.length() - 1);
|
}
|
||||||
|
|
||||||
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
//每50个作为一批,拆分
|
||||||
queryOfsSoSaleOutVo.setCode(codesStr);
|
// List<List<StockinOrderSearchResponse.StockinOrder>> splitListByCount = SplitListByCountUtil.splitListByCount(returnGoodHeaderDetailsDataDtoList1, 50);
|
||||||
ofsStandardUtil.getOfsSaleOrder(queryOfsSoSaleOutVo, headerDetailsDtoArrayList, 1L);
|
// for (int i = 0; i < splitListByCount.size(); i++) {
|
||||||
|
// List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = splitListByCount.get(i);
|
||||||
|
//
|
||||||
|
// StringBuffer codes = new StringBuffer();
|
||||||
|
// for (int j = 0; j < stockinOrderList.size(); j++) {
|
||||||
|
// StockinOrderSearchResponse.StockinOrder stockinOrder = stockinOrderList.get(j);
|
||||||
|
// StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||||
|
// List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||||
|
// RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData1 = header.getRerturnGoodsOrderSearchData();//OFS售后订单
|
||||||
|
// if (rerturnGoodsOrderSearchData1 != null) {
|
||||||
|
// RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData1.getHeader();
|
||||||
|
// List<RerturnGoodsOrderSearchDetails> details1 = rerturnGoodsOrderSearchData1.getDetails();
|
||||||
|
// codes.append(header1.getRefOrderCode());
|
||||||
|
// codes.append(",");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// String codesStr = codes.substring(0, codes.length() - 1);
|
||||||
|
//
|
||||||
|
// QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
||||||
|
// queryOfsSoSaleOutVo.setCode(codesStr);
|
||||||
|
// ofsStandardUtil.getOfsSaleOrder(queryOfsSoSaleOutVo, headerDetailsDtoArrayList, 1L);
|
||||||
|
// }
|
||||||
|
|
||||||
|
//Set集合转List集合
|
||||||
|
if (refOrderCodeSet.size() > 0) {
|
||||||
|
List<String> stringList = refOrderCodeSet.stream().collect(Collectors.toList());
|
||||||
|
List<List<String>> lists = SplitListByCountUtil.splitListByCount(stringList, 100);
|
||||||
|
for (int i = 0; i < lists.size(); i++) {
|
||||||
|
List<String> strings = lists.get(i);
|
||||||
|
String result = strings.stream().map(s -> s.trim()).collect(Collectors.joining(","));
|
||||||
|
if (result != null && result.length() > 0) {
|
||||||
|
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
||||||
|
queryOfsSoSaleOutVo.setCode(result);
|
||||||
|
ofsStandardUtil.getOfsSaleOrder(queryOfsSoSaleOutVo, headerDetailsDtoArrayList, 1L);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("queryBatchOfsOrder方法抛出异常", e);
|
logger.error("queryBatchOfsOrder方法抛出异常", e);
|
||||||
|
@ -1800,6 +1871,13 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
private void findOfsOrder(List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoList, List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) {
|
private void findOfsOrder(List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoList, List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) {
|
||||||
if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0 && returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0 && returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
||||||
try {
|
try {
|
||||||
|
headerDetailsDtoList.forEach(dto -> {
|
||||||
|
if (dto.getHeader() != null && dto.getHeader().getId() == null) {
|
||||||
|
dto.getHeader().setId("");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Map<String, com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> collect = headerDetailsDtoList.stream().collect(Collectors.toMap(dto -> dto.getHeader().getId(), dto -> dto));
|
||||||
|
|
||||||
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
||||||
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
||||||
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||||
|
@ -1808,12 +1886,17 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header.getRerturnGoodsOrderSearchData();//OFS售后订单
|
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header.getRerturnGoodsOrderSearchData();//OFS售后订单
|
||||||
RerturnGoodsOrderSearchHeader header2 = rerturnGoodsOrderSearchData.getHeader();
|
RerturnGoodsOrderSearchHeader header2 = rerturnGoodsOrderSearchData.getHeader();
|
||||||
List<RerturnGoodsOrderSearchDetails> details2 = rerturnGoodsOrderSearchData.getDetails();
|
List<RerturnGoodsOrderSearchDetails> details2 = rerturnGoodsOrderSearchData.getDetails();
|
||||||
|
// for (int j = 0; j < headerDetailsDtoList.size(); j++) {
|
||||||
for (int j = 0; j < headerDetailsDtoList.size(); j++) {
|
// com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = headerDetailsDtoList.get(j);
|
||||||
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = headerDetailsDtoList.get(j);
|
// com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto.getHeader();
|
||||||
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto.getHeader();
|
// List<DetailsDto> details1 = headerDetailsDto.getDetails();
|
||||||
List<DetailsDto> details1 = headerDetailsDto.getDetails();
|
// if (header2.getRefOrderId().equals(header1.getId())) {
|
||||||
if (header2.getRefOrderId().equals(header1.getId())) {
|
// header.setHeaderDetailsDto(headerDetailsDto);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
if (header2.getRefOrderId() != null && !"".equals(header2.getRefOrderId().trim())) {
|
||||||
|
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = collect.get(header2.getRefOrderId().trim());
|
||||||
|
if (headerDetailsDto != null) {
|
||||||
header.setHeaderDetailsDto(headerDetailsDto);
|
header.setHeaderDetailsDto(headerDetailsDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,10 +80,10 @@ public class SoSaleOutPluginInitializerToBTest {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// soSaleOutPluginInitializerToB.startImplementByCode("LETS-SH2024101800025544", "stock");
|
// soSaleOutPluginInitializerToB.startImplementByCode("LETS-SH2024101800025544", "stock");
|
||||||
// soSaleOutPluginInitializerToB.startImplementByStockTime("2024-10-18 00:00:00", "2024-10-18 23:59:59");
|
soSaleOutPluginInitializerToB.startImplementByStockTime("2024-10-23 16:09:59", "2024-10-23 16:10:01");
|
||||||
|
|
||||||
String aaa = "LETS-RE2024102200000018";
|
// String aaa = "LETS-SH2024102300043720";
|
||||||
soSaleOutPluginInitializerToB.startImplementByCode(aaa, "stock");
|
// soSaleOutPluginInitializerToB.startImplementByCode(aaa, "stock");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue