refactor(sales): 重构 Toc 退货库存处理逻辑
- 修改数据过滤和插入底表的顺序,提高处理效率 -优化代码结构,注释掉不必要的逻辑 - 更新测试用例,使用新的退货单号进行测试
This commit is contained in:
parent
4f863731a5
commit
aeef3bafb5
|
@ -423,11 +423,11 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity {
|
||||||
LOCK1.lock();
|
LOCK1.lock();
|
||||||
try {
|
try {
|
||||||
//保存到mysql底表
|
//保存到mysql底表
|
||||||
batchInsert(returnGoodHeaderDetailsDataDtoArrayList);
|
// batchInsert(returnGoodHeaderDetailsDataDtoArrayList);
|
||||||
//过滤成功的数据
|
//过滤成功的数据
|
||||||
List<PassiveStorageResponse.Data> data = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList);
|
// List<PassiveStorageResponse.Data> data = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList);
|
||||||
//执行推送主逻辑
|
//执行推送主逻辑
|
||||||
implementStock(data);
|
implementStock(returnGoodHeaderDetailsDataDtoArrayList);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("TOC退货-库存:getSetStock方法抛出异常", e);
|
logger.error("TOC退货-库存:getSetStock方法抛出异常", e);
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -974,6 +974,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity {
|
||||||
saleorderRequestDtoList.add(saleorderRequestDto);
|
saleorderRequestDtoList.add(saleorderRequestDto);
|
||||||
Map<String, List<SaleorderRequestDto>> stringStringMap = new HashMap<>();
|
Map<String, List<SaleorderRequestDto>> stringStringMap = new HashMap<>();
|
||||||
stringStringMap.put("saleorder", saleorderRequestDtoList);
|
stringStringMap.put("saleorder", saleorderRequestDtoList);
|
||||||
|
|
||||||
SoSaleResultRootDto soSaleResultRootDto = sendU8CTOCOrder(JSON.toJSONString(stringStringMap));
|
SoSaleResultRootDto soSaleResultRootDto = sendU8CTOCOrder(JSON.toJSONString(stringStringMap));
|
||||||
String vreceiptcode = null;
|
String vreceiptcode = null;
|
||||||
String pk_corp = null;
|
String pk_corp = null;
|
||||||
|
@ -1546,7 +1547,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity {
|
||||||
// return null;
|
// return null;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 2025 年 3 月 12 日 15:53:27
|
* 2025 年 3 月 12 日 15:53:27
|
||||||
* 生成业务日期:取「关联时间」,只能取关联时间,否则会存在跨月问题
|
* 生成业务日期:取「关联时间」,只能取关联时间,否则会存在跨月问题
|
||||||
|
@ -1674,6 +1675,12 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity {
|
||||||
//初始化公司档案对照关系
|
//初始化公司档案对照关系
|
||||||
// Map<String, String> comparisonCompanyArchives = queryU8CEntityUtil.queryBdDefDocByPkDefDocAll();
|
// Map<String, String> comparisonCompanyArchives = queryU8CEntityUtil.queryBdDefDocByPkDefDocAll();
|
||||||
|
|
||||||
|
//过滤成功的数据
|
||||||
|
passiveStorageResponseDataList = filterDataStock(passiveStorageResponseDataList);
|
||||||
|
|
||||||
|
//保存到mysql底表
|
||||||
|
batchInsert(passiveStorageResponseDataList);
|
||||||
|
|
||||||
for (int i = 0; i < passiveStorageResponseDataList.size(); i++) {
|
for (int i = 0; i < passiveStorageResponseDataList.size(); i++) {
|
||||||
PassiveStorageResponse.Data data = passiveStorageResponseDataList.get(i);
|
PassiveStorageResponse.Data data = passiveStorageResponseDataList.get(i);
|
||||||
PassiveStorageResponse.Header header = data.getHeader();
|
PassiveStorageResponse.Header header = data.getHeader();
|
||||||
|
|
|
@ -460,13 +460,13 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
LOCK1.lock();
|
LOCK1.lock();
|
||||||
try {
|
try {
|
||||||
//过滤成功的数据
|
//过滤成功的数据
|
||||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList);
|
// List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList);
|
||||||
//保存到mysql
|
//保存到mysql
|
||||||
if (!ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType)) {
|
// if (!ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType)) {
|
||||||
batchInsert(stockinOrderList);
|
// batchInsert(stockinOrderList);
|
||||||
}
|
// }
|
||||||
//执行推送主逻辑
|
//执行推送主逻辑
|
||||||
implementStock(stockinOrderList, pushScenarioType);
|
implementStock(returnGoodHeaderDetailsDataDtoArrayList, pushScenarioType);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("TOC退货-库存:getSetStock方法抛出异常", e);
|
logger.error("TOC退货-库存:getSetStock方法抛出异常", e);
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -487,9 +487,9 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
//移动到档案查询时发生过滤
|
//移动到档案查询时发生过滤
|
||||||
// List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterDataTran(returnGoodHeaderDetailsDataDtoArrayList);
|
// List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterDataTran(returnGoodHeaderDetailsDataDtoArrayList);
|
||||||
//保存到mysql
|
//保存到mysql
|
||||||
if (!ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType)) {
|
// if (!ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType)) {
|
||||||
batchInsert(returnGoodHeaderDetailsDataDtoArrayList);
|
// batchInsert(returnGoodHeaderDetailsDataDtoArrayList);
|
||||||
}
|
// }
|
||||||
//执行推送主逻辑
|
//执行推送主逻辑
|
||||||
implementTran(returnGoodHeaderDetailsDataDtoArrayList, pushScenarioType);
|
implementTran(returnGoodHeaderDetailsDataDtoArrayList, pushScenarioType);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -746,7 +746,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
try {
|
try {
|
||||||
// 查询基本档案
|
// 查询基本档案
|
||||||
String sceneType = "stock";
|
String sceneType = "stock";
|
||||||
List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType);
|
List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType, pushScenarioType);
|
||||||
// 分组汇总
|
// 分组汇总
|
||||||
String dimension = null;
|
String dimension = null;
|
||||||
// dimension = "1001&dy-intoyou&B2CHA20240033&6973391733588&SALES&002";
|
// dimension = "1001&dy-intoyou&B2CHA20240033&6973391733588&SALES&002";
|
||||||
|
@ -1044,7 +1044,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
try {
|
try {
|
||||||
// 查询基本档案
|
// 查询基本档案
|
||||||
String sceneType = "tran";
|
String sceneType = "tran";
|
||||||
List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType);
|
List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType, pushScenarioType);
|
||||||
// 分组汇总
|
// 分组汇总
|
||||||
String dimension = null;
|
String dimension = null;
|
||||||
Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension, sceneType);
|
Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension, sceneType);
|
||||||
|
@ -1604,7 +1604,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
* @param sceneType 业务场景类型
|
* @param sceneType 业务场景类型
|
||||||
* @author liuyang
|
* @author liuyang
|
||||||
*/
|
*/
|
||||||
private List<GoodsRertunSonDetailsDto> queryBasicArchivesStock(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1, String sceneType) throws Exception {
|
private List<GoodsRertunSonDetailsDto> queryBasicArchivesStock(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1, String sceneType, String pushScenarioType) throws Exception {
|
||||||
Assert.notNull(returnGoodHeaderDetailsDataDtoList1, "returnGoodHeaderDetailsDataDtoList1不能为空");
|
Assert.notNull(returnGoodHeaderDetailsDataDtoList1, "returnGoodHeaderDetailsDataDtoList1不能为空");
|
||||||
Assert.notNull(sceneType, "sceneType不能为空");
|
Assert.notNull(sceneType, "sceneType不能为空");
|
||||||
|
|
||||||
|
@ -1648,12 +1648,18 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
markTimeInMorningEvening(returnGoodHeaderDetailsDataDtoList1);
|
markTimeInMorningEvening(returnGoodHeaderDetailsDataDtoList1);
|
||||||
if ("stock".equals(sceneType)) {
|
if ("stock".equals(sceneType)) {
|
||||||
returnGoodHeaderDetailsDataDtoList1 = filtrationTransactionSuccessTime(returnGoodHeaderDetailsDataDtoList1);
|
returnGoodHeaderDetailsDataDtoList1 = filtrationTransactionSuccessTime(returnGoodHeaderDetailsDataDtoList1);
|
||||||
|
//过滤成功数据
|
||||||
|
returnGoodHeaderDetailsDataDtoList1 = filterDataStock(returnGoodHeaderDetailsDataDtoList1);
|
||||||
}
|
}
|
||||||
if ("tran".equals(sceneType)) {
|
if ("tran".equals(sceneType)) {
|
||||||
returnGoodHeaderDetailsDataDtoList1 = filterForSale(returnGoodHeaderDetailsDataDtoList1);
|
returnGoodHeaderDetailsDataDtoList1 = filterForSale(returnGoodHeaderDetailsDataDtoList1);
|
||||||
//2025年8月5日10:30:14 过滤掉推送成功的售后入库单
|
//2025年8月5日10:30:14 过滤掉推送成功的售后入库单
|
||||||
returnGoodHeaderDetailsDataDtoList1 = filterDataTran(returnGoodHeaderDetailsDataDtoList1);
|
returnGoodHeaderDetailsDataDtoList1 = filterDataTran(returnGoodHeaderDetailsDataDtoList1);
|
||||||
}
|
}
|
||||||
|
//插入到底表,过滤之后再插入到底表
|
||||||
|
if (!ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType)) {
|
||||||
|
batchInsert(returnGoodHeaderDetailsDataDtoList1);
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class PassiveWarehouseReceiptToCTest {
|
||||||
//情况二
|
//情况二
|
||||||
// passiveWarehouseReceiptToC.startImplementByCode("RH20250731000423", "tran");
|
// passiveWarehouseReceiptToC.startImplementByCode("RH20250731000423", "tran");
|
||||||
//情况三
|
//情况三
|
||||||
passiveWarehouseReceiptToC.startImplementByCode("RH20250731000423", "stock");
|
passiveWarehouseReceiptToC.startImplementByCode("RH20250722000231", "stock");
|
||||||
// passiveWarehouseReceiptToC.startImplementByCode("RH20250723000754", "tran");
|
// passiveWarehouseReceiptToC.startImplementByCode("RH20250723000754", "tran");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class SoSaleReturnPluginInitializerToCTest {
|
||||||
try {
|
try {
|
||||||
// soSaleReturnPluginInitializerToC.startImplementByTradeTime("2025-04-28 00:00:00", "2025-04-28 23:59:59", "0");
|
// soSaleReturnPluginInitializerToC.startImplementByTradeTime("2025-04-28 00:00:00", "2025-04-28 23:59:59", "0");
|
||||||
|
|
||||||
soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025072700000824", "stock");
|
soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025080200002257", "stock");
|
||||||
|
|
||||||
// soSaleReturnPluginInitializerToC.startImplementStockByTime("2025-01-31 00:00:00", "2025-01-31 23:59:59", "0");
|
// soSaleReturnPluginInitializerToC.startImplementStockByTime("2025-01-31 00:00:00", "2025-01-31 23:59:59", "0");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue