refactor(sales): 优化无源入库和售后入库业务日期生成逻辑
- 修改了 PassiveWarehouseReceiptToC 和 SoSaleReturnPluginInitializerToC 类中的业务日期生成逻辑 - 增加了对交易成功时间的判断,以确定最终的业务日期 - 优化了异常处理和错误日志记录 - 更新了相关测试用例
This commit is contained in:
parent
1e4d0c8e8c
commit
0011e45611
|
@ -1500,6 +1500,9 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity {
|
||||||
/**
|
/**
|
||||||
* 2025 年 3 月 12 日 15:53:27
|
* 2025 年 3 月 12 日 15:53:27
|
||||||
* 生成业务日期:取「关联时间」,只能取关联时间,否则会存在跨月问题
|
* 生成业务日期:取「关联时间」,只能取关联时间,否则会存在跨月问题
|
||||||
|
* 2025年8月12日09:39:33 代码调整成
|
||||||
|
* "1.无源入库单没有交易成功时间",则取关联时间
|
||||||
|
* "2.关联时间早于交易成功时间",则取交易成功时间
|
||||||
*
|
*
|
||||||
* @author liuyang
|
* @author liuyang
|
||||||
*/
|
*/
|
||||||
|
@ -1508,17 +1511,35 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity {
|
||||||
if (header != null && header.getReceiptCode() != null) {
|
if (header != null && header.getReceiptCode() != null) {
|
||||||
code = header.getReceiptCode();
|
code = header.getReceiptCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto();
|
||||||
|
Assert.notNull(headerDetailsDto, "售后入库单对应的销售订单不能为空! 无源入库单编码:{}", code);
|
||||||
|
Assert.notNull(headerDetailsDto.getHeader(), "售后入库单对应的销售订单不能为空! 无源入库单编码:{}", code);
|
||||||
|
|
||||||
if (header != null && header.getRelatedAt() != null) {
|
if (header != null && header.getRelatedAt() != null) {
|
||||||
String closedAt = header.getRelatedAt();
|
String relatedAt = header.getRelatedAt();
|
||||||
String businessFormat = null;
|
String relatedAtDateStr = null;
|
||||||
|
String tradeSuccessAtDateStr = null;
|
||||||
try {
|
try {
|
||||||
Date dbill = DateUtil.parse(closedAt);
|
Date relatedAtDate = DateUtil.parse(relatedAt);
|
||||||
businessFormat = DateUtil.format(dbill, "yyyy-MM-dd");
|
relatedAtDateStr = DateUtil.format(relatedAtDate, "yyyy-MM-dd");
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("业务日期生成失败relatedAt(O 关联时间)解析异常:{} O 无源入库单号:{}", e.getMessage(), code);
|
if (headerDetailsDto.getHeader().getTradeSuccessAt() != null && !"".equals(headerDetailsDto.getHeader().getTradeSuccessAt())) {
|
||||||
Assert.state(false, "业务日期生成失败closedAt(O 关联时间)解析异常:{} O 无源入库单号:{}", e.getMessage(), code);
|
Date tradeSuccessAtDate = DateUtil.parse(headerDetailsDto.getHeader().getTradeSuccessAt());
|
||||||
|
tradeSuccessAtDateStr = DateUtil.format(tradeSuccessAtDate, "yyyy-MM-dd");
|
||||||
|
|
||||||
|
if ((relatedAtDate.before(tradeSuccessAtDate) || relatedAtDate.equals(tradeSuccessAtDate))) {
|
||||||
|
//满足"2.关联时间早于交易成功时间"
|
||||||
|
return tradeSuccessAtDateStr;
|
||||||
}
|
}
|
||||||
return businessFormat;
|
}
|
||||||
|
//满足"1.无源入库单没有交易成功时间"
|
||||||
|
return relatedAtDateStr;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("时间日期解析异常:{} O 无源入库单号:{}", e.getMessage(), code);
|
||||||
|
Assert.state(false, "时间日期解析异常:{} O 无源入库单号:{}", e.getMessage(), code);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
} else {
|
} else {
|
||||||
logger.error("业务日期生成失败relatedAt(O 关联时间)不能为空 O 无源入库单号:{}", code);
|
logger.error("业务日期生成失败relatedAt(O 关联时间)不能为空 O 无源入库单号:{}", code);
|
||||||
Assert.state(false, "业务日期生成失败relatedAt(O 关联时间)不能为空 O 无源入库单号:{}", code);
|
Assert.state(false, "业务日期生成失败relatedAt(O 关联时间)不能为空 O 无源入库单号:{}", code);
|
||||||
|
|
|
@ -1444,28 +1444,51 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
||||||
/**
|
/**
|
||||||
* 2024年8月9日 15:43:13
|
* 2024年8月9日 15:43:13
|
||||||
* 生成业务日期:取「入库时间」、还是取「结束收货时间」
|
* 生成业务日期:取「入库时间」、还是取「结束收货时间」
|
||||||
|
* <p>
|
||||||
|
* 2025年8月12日09:05:05 代码调整成
|
||||||
|
* "1.售后入库单没有交易成功时间",则取关单时间
|
||||||
|
* "2.关单时间早于交易成功时间",则取交易成功时间
|
||||||
*
|
*
|
||||||
* @author liuyang
|
* @author liuyang
|
||||||
*/
|
*/
|
||||||
private String createGenerateBusinessDate(StockinOrderSearchResponse.StockinOrder.StockinH header) {
|
private String createGenerateBusinessDate(StockinOrderSearchResponse.StockinOrder.StockinH header) throws Exception {
|
||||||
//测试
|
//测试
|
||||||
// header.setClosedAt("2024-11-29 10:00:12");
|
// header.setClosedAt("2024-11-29 10:00:12");
|
||||||
String code = null;
|
String code = null;
|
||||||
if (header != null && header.getCode() != null) {
|
if (header != null && header.getCode() != null) {
|
||||||
code = header.getCode();
|
code = header.getCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//OFS销售订单
|
||||||
|
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto();
|
||||||
|
Assert.notNull(headerDetailsDto, "售后入库单对应的销售订单不能为空! 售后入库单编码:{}", code);
|
||||||
|
Assert.notNull(headerDetailsDto.getHeader(), "售后入库单对应的销售订单不能为空! 售后入库单编码:{}", code);
|
||||||
|
|
||||||
if (header != null && header.getClosedAt() != null) {
|
if (header != null && header.getClosedAt() != null) {
|
||||||
//TOC以出库日期作为业务日期
|
//TOC以出库日期作为业务日期
|
||||||
String closedAt = header.getClosedAt();
|
String closedAt = header.getClosedAt();
|
||||||
String businessFormat = null;
|
String closedAtDateStr = null;
|
||||||
|
String tradeSuccessAtDateStr = null;
|
||||||
try {
|
try {
|
||||||
Date dbill = DateUtil.parse(closedAt);
|
Date closedAtDate = DateUtil.parse(closedAt);
|
||||||
businessFormat = DateUtil.format(dbill, "yyyy-MM-dd");
|
closedAtDateStr = DateUtil.format(closedAtDate, "yyyy-MM-dd");
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("业务日期生成失败closedAt(O关单时间)解析异常:{} O售后入库单号:{}", e.getMessage(), code);
|
if (headerDetailsDto.getHeader().getTradeSuccessAt() != null && !"".equals(headerDetailsDto.getHeader().getTradeSuccessAt())) {
|
||||||
Assert.state(false, "业务日期生成失败closedAt(O关单时间)解析异常:{} O售后入库单号:{}", e.getMessage(), code);
|
Date tradeSuccessAtDate = DateUtil.parse(headerDetailsDto.getHeader().getTradeSuccessAt());
|
||||||
|
tradeSuccessAtDateStr = DateUtil.format(tradeSuccessAtDate, "yyyy-MM-dd");
|
||||||
|
|
||||||
|
if ((closedAtDate.before(tradeSuccessAtDate) || closedAtDate.equals(tradeSuccessAtDate))) {
|
||||||
|
//满足"2.关单时间早于交易成功时间"
|
||||||
|
return tradeSuccessAtDateStr;
|
||||||
}
|
}
|
||||||
return businessFormat;
|
}
|
||||||
|
//满足"1.售后入库单没有交易成功时间"
|
||||||
|
return closedAtDateStr;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("时间日期解析异常:{} O售后入库单号:{}", e.getMessage(), code);
|
||||||
|
Assert.state(false, "时间日期解析异常:{} O售后入库单号:{}", e.getMessage(), code);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
} else {
|
} else {
|
||||||
logger.error("业务日期生成失败closedAt(O关单时间)不能为空 O售后入库单号:{}", code);
|
logger.error("业务日期生成失败closedAt(O关单时间)不能为空 O售后入库单号:{}", code);
|
||||||
Assert.state(false, "业务日期生成失败closedAt(O关单时间)不能为空 O售后入库单号:{}", code);
|
Assert.state(false, "业务日期生成失败closedAt(O关单时间)不能为空 O售后入库单号:{}", code);
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class PassiveWarehouseReceiptToCTest {
|
||||||
//情况二
|
//情况二
|
||||||
// passiveWarehouseReceiptToC.startImplementByCode("RH20250731000423", "tran");
|
// passiveWarehouseReceiptToC.startImplementByCode("RH20250731000423", "tran");
|
||||||
//情况三
|
//情况三
|
||||||
passiveWarehouseReceiptToC.startImplementByCode("RH20250731000613", "tran");
|
passiveWarehouseReceiptToC.startImplementByCode("RH20250731000423", "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-RE2025072800000594", "tran");
|
soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025072800000594", "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