refactor(sales): 重构业务日期生成逻辑

- 修改 createGenerateBusinessDateTran 方法,增加 SonDetailsDto 参数
- 从明细行获取交易成功时间,而非头部
- 更新错误日志,增加明细行主键信息
- 在 implementTran 方法中调用更新后的 createGenerateBusinessDateTran
This commit is contained in:
liuy 2024-12-27 15:48:22 +08:00
parent f5ea373be2
commit ad24a5e99e
1 changed files with 16 additions and 11 deletions

View File

@ -1353,28 +1353,32 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
*
* @author liuyang
*/
private String createGenerateBusinessDateTran(com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto header) {
private String createGenerateBusinessDateTran(com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto header, SonDetailsDto sonDetailsDto) {
//O出库单单号
String code = null;
if (header != null && header.getCode() != null) {
code = header.getCode();
}
//测试
// header.setTradeSuccessAt("2024-10-24 14:46:28");
if (header != null && header.getTradeSuccessAt() != null) {
//O出库单明细行主键
String detailedId = null;
if (sonDetailsDto != null && sonDetailsDto.getId() != null) {
detailedId = sonDetailsDto.getId();
}
if (sonDetailsDto != null && sonDetailsDto.getTradeSuccessAt() != null) {
//TOC以出库日期作为业务日期
String tradeSuccessAt = header.getTradeSuccessAt();
String tradeSuccessAt = sonDetailsDto.getTradeSuccessAt();
String businessFormat = null;
try {
Date dbill = DateUtil.parse(tradeSuccessAt);
businessFormat = DateUtil.format(dbill, "yyyy-MM-dd");
} catch (Exception e) {
logger.error("业务日期生成失败tradeSuccessAt(O交易成功时间)解析异常:{} O销售出库单编码{}", e.getMessage(), code);
Assert.state(false, "业务日期生成失败tradeSuccessAt(O交易成功时间)解析异常:{} O销售出库单编码{}", e.getMessage(), code);
logger.error("业务日期生成失败tradeSuccessAt(O交易成功时间)解析异常:{} O销售出库单编码{} 明细主键:{}", e.getMessage(), code, detailedId);
Assert.state(false, "业务日期生成失败tradeSuccessAt(O交易成功时间)解析异常:{} O销售出库单编码{} 明细主键:{}", e.getMessage(), code, detailedId);
}
return businessFormat;
} else {
logger.error("业务日期生成失败tradeSuccessAt(O交易成功时间)不能为空! O销售出库单编码{}", code);
Assert.state(false, "业务日期生成失败tradeSuccessAt(O交易成功时间)不能为空! O销售出库单编码{}", code);
logger.error("业务日期生成失败tradeSuccessAt(O交易成功时间,取明细行)不能为空! O销售出库单编码{} 明细主键:{}", code, detailedId);
Assert.state(false, "业务日期生成失败tradeSuccessAt(O交易成功时间,取明细行)不能为空! O销售出库单编码{} 明细主键:{}", code, detailedId);
return null;
}
}
@ -2137,6 +2141,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
* 库存同步代码同步逻辑
*
* @param headerDetailsDtos 查询得到的O出库单对象
* @param pushScenarioType 阶段纬度标识
* @author liuyang
*/
private void implementTran(List<com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto> headerDetailsDtos, String pushScenarioType) throws Exception {
@ -2215,7 +2220,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
// checkArchives(oldValue.get(0));
// checkAllFail(oldValue, newState2, "1");
//取交易成功时间生成业务日期
String generateBusinessDate = createGenerateBusinessDateTran(header);
String generateBusinessDate = createGenerateBusinessDateTran(header, oldValue.get(0));
SaleorderRequestDto saleorderRequestDto = new SaleorderRequestDto();
SaleorderRequestParentDto saleorderRequestParentDto = new SaleorderRequestParentDto();
@ -2504,7 +2509,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
//验证数据完整性
// checkAllFail(oldValue, newState3, "2");
//取交易成功时间生成业务日期
String generateBusinessDate = createGenerateBusinessDateTran(header);
String generateBusinessDate = createGenerateBusinessDateTran(header, oldValue.get(0));
SaleorderRequestDto saleorderRequestDto = new SaleorderRequestDto();
SaleorderRequestParentDto saleorderRequestParentDto = new SaleorderRequestParentDto();