refactor(sales): 重构 Toc 退货库存处理逻辑

- 修改数据过滤和插入底表的顺序,提高处理效率
-优化代码结构,注释掉不必要的逻辑
- 更新测试用例,使用新的退货单号进行测试
This commit is contained in:
liuy 2025-08-13 16:23:03 +08:00
parent 4f863731a5
commit aeef3bafb5
4 changed files with 30 additions and 17 deletions

View File

@ -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();

View File

@ -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);

View File

@ -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();

View File

@ -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");