feat(lets): 新增 TOB 无源入库单处理功能- 新增 OrderToBHeaderDtoV2 类用于 TOB 无源入库单的数据传输

- 修改 PassiveWarehouseReceiptToC 类,增加对 TOB 无源入库单的处理逻辑
- 新增 PassiveWarehouseReceiptToB 类用于处理 TOB 无源入库单
- 更新配置文件,添加 TOB无源入库单处理相关的 bean- 新增测试用例,验证 TOB 无源入库单处理功能
This commit is contained in:
liuy 2025-03-17 19:01:09 +08:00
parent 2108f127fb
commit 5d8c2b64e5
11 changed files with 902 additions and 585 deletions

View File

@ -4,6 +4,8 @@ import java.util.HashMap;
import java.util.Map;
/**
* 如果是海外店铺税率为 0
*
* @Authorliuyang
* @Packagecom.hzya.frame.plugin.lets.constant
* @ProjectkangarooDataCenterV3

View File

@ -935,7 +935,6 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity {
// 查询基本档案
String sceneType = "tran";
List<PassiveStorageSonDetailsDto> passiveStorageSonDetailsDtos = queryBasicArchivesStock(passiveStorageResponseDataList, sceneType);
filterAfterSalesOrder(passiveStorageResponseDataList);
// 分组汇总
String dimension = null;
@ -1236,7 +1235,10 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity {
//查询OFS无源入库单对应的售后订单并关联无源无源入库单对象
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchData = queryBatchAfterSalesOrder(passiveStorageResponseDataList);
findAfterSalesOrder(rerturnGoodsOrderSearchData, passiveStorageResponseDataList);
if ("tran".equals(sceneType)) {
passiveStorageResponseDataList = filterAfterSalesOrder(passiveStorageResponseDataList);
}
//查询OFS售后订单对应的OFS销售订单
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtos = queryBatchOfsOrder(passiveStorageResponseDataList);
findOfsOrder(headerDetailsDtos, passiveStorageResponseDataList);

View File

@ -2846,7 +2846,9 @@ public class SoSaleOutPluginInitializerToB extends PluginBaseEntity {
private void splicingPrintingOrderNumber(List<HeaderDetailsDto> headerDetailsDtoList, String sceneType, String startTime, String endTime, String code) {
try {
if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) {
String codesJoined = headerDetailsDtoList.stream().map(HeaderDetailsDto::getHeader).map(HeaderDto::getCode).collect(Collectors.joining(","));
String codesJoined = headerDetailsDtoList.stream()
.map(HeaderDetailsDto::getHeader)
.map(HeaderDto::getCode).collect(Collectors.joining(","));
logger.info("{} 销售出库单号:{} 查询条件:{} {} code{}", sceneType, codesJoined, startTime, endTime, code);
} else {
logger.info("{} 销售出库单号:{} 查询条件:{} {} code{}", sceneType, "", startTime, endTime, code);

View File

@ -1317,10 +1317,11 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
soSaleorderBEntity.setDataSourceCode("lets_u8c");
List<SoSaleorderBEntity> soSaleorderBEntityList = iSoSaleorderBDao.query(soSaleorderBEntity);
if (soSaleorderBEntityList == null || soSaleorderBEntityList.size() == 0) {
Assert.state(false, "根据O销售订单主键{}无法匹配到U8C销售订单明细行(传到U8C可能失败了)", soSaleEntityList.get(soSaleEntityList.size() - 1).getCsaleid());
} else if (soSaleorderBEntityList.size() >= 2) {
Assert.state(false, "根据O销售订单主键{}无法匹配到U8C销售订单明细行(传到U8C可能失败了)", soSaleEntityList.get(soSaleEntityList.size() - 1).getCsaleid());
Assert.state(false, "根据O销售订单主键{}无法匹配到U8C销售订单明细行!", soSaleEntityList.get(soSaleEntityList.size() - 1).getCsaleid());
}
// else if (soSaleorderBEntityList.size() >= 2) {
// Assert.state(false, "根据O销售订单主键{}无法匹配到U8C销售订单明细行(传到U8C可能失败了)", soSaleEntityList.get(soSaleEntityList.size() - 1).getCsaleid());
// }
//查询U8C销售订单对应的销售出库单表头
IcGeneralHEntity icGeneralHEntity = new IcGeneralHEntity();

View File

@ -0,0 +1,133 @@
package com.hzya.frame.plugin.lets.u8cdto;
import com.hzya.frame.plugin.lets.entity.*;
import com.hzya.frame.plugin.lets.queryvo.ExtIntegrationTaskLivingDetailsQueryVo;
import com.hzya.frame.ttxofs.dto.ofssalesordersearch.SaleOrderMessageDto;
import com.hzya.frame.ttxofs.dto.passivestorage.PassiveStorageResponse;
import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchData;
import com.hzya.frame.ttxofs.dto.stock.StockinOrderSearchResponse;
import lombok.Data;
import java.util.List;
/**
* @Authorliuyang
* @Packagecom.hzya.frame.plugin.lets.u8cdto
* @ProjectkangarooDataCenterV3
* @nameOrderToBHeaderDto
* @Date2024年8月15日 14:52:34
* @FilenameOrderToBHeaderDto
*/
@Data
public class OrderToBHeaderDtoV2 extends PassiveStorageResponse.Header {
/**
* 表头公司销售公司视为发货公司
*/
private BdCorpEntity bdCorpEntity;
/**
* 发货库存组织
*/
private BdCalbodyEntity bdCalbodyEntity;
/**
* 入库仓库
*/
private BdStordocEntity bdStordocEntity;
/**
* 收货库存组织
*/
// private BdCalbodyEntity bdCalbodyEntity1;
/**
* 收货仓库
*/
// private BdStordocEntity bdStordocEntity1;
/**
* 销售组织
*/
private BdSalestruEntity bdSalestruEntity;
/**
* 业务部门
*/
private BdDeptdocEntity bdDeptdocEntity;
/**
* 客商管理档案
*/
private BdCumandocEntity bdCumandocEntity;
/**
* 客商基本档案
*/
private BdCubasdocEntity bdCubasdocEntity;
/**
* 发货公司
*/
private BdCorpEntity deliverGoodsCorp;
/**
* U8C平台档案
*/
private BdDefdocEntity platformArchives;
/**
* 店铺档案
*/
private BdDefdocEntity shopArchives;
/**
* TOB无源入库单表头
*/
private PassiveStorageResponse.Header header;
/**
* TOB售后入库单表体
*/
private List<PassiveStorageResponse.Details> details;
/**
* OFS销售订单
*/
private SaleOrderMessageDto saleOrderMessageDto;
/**
* U8C销售订单
*/
private SoSaleEntity soSaleEntity;
/**
* U8C销售出库单表头
*/
private IcGeneralHEntity icGeneralHEntity;
/**
* U8C销售出库单明细行
*/
private List<IcGeneralBEntity> icGeneralBEntityList;
/**
* U8C销售订单明细行
*/
private List<SoSaleorderBEntity> soSaleorderBEntityList;
/**
* 执行情况自定义项
*/
private List<ExtIntegrationTaskLivingDetailsQueryVo> extIntegrationTaskLivingDetailsQueryVos;
/**
* OFS售后订单
*/
private RerturnGoodsOrderSearchData ofsRertunOrder;
/**
* O收发类别
*/
private BdRdclEntity bdRdclEntity;
}

View File

@ -49,6 +49,9 @@
<!--O采购入库确认单(委外加工类型)->U8C委外入库单-->
<bean name="consignmachiningCinfurmIn" class="com.hzya.frame.plugin.lets.plugin.outsourc.ConsignmachiningCinfurmIn"/>
<!-- 无源入库单(TOC) -> 推送U8C 红字销售订单 -->
<!-- 无源入库单(TOC) -> 推送U8C 红字销售订单、红字应收单 -->
<bean name="passiveWarehouseReceiptToC" class="com.hzya.frame.plugin.lets.plugin.sales.PassiveWarehouseReceiptToC"/>
<!-- 无源入库单(TOB) -> 推送U8C 红字销售订单、红字销售发票 -->
<bean name="passiveWarehouseReceiptToB" class="com.hzya.frame.plugin.lets.plugin.sales.PassiveWarehouseReceiptToB"/>
</beans>

View File

@ -0,0 +1,44 @@
package com.hzya.frame.plugin.lets.plugin.sales;
import com.hzya.frame.WebappApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @Authorliuyang
* @Packagecom.hzya.frame.plugin.lets.plugin.sales
* @ProjectkangarooDataCenterV3
* @namePassiveWarehouseReceiptToBTest
* @Date2025/3/17 16:51
* @FilenamePassiveWarehouseReceiptToBTest
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = WebappApplication.class)
public class PassiveWarehouseReceiptToBTest {
@Autowired
private PassiveWarehouseReceiptToB passiveWarehouseReceiptToB;
@Test
public void startImplementByStockTime() {
}
@Test
public void startImplementByTradeTime() {
}
@Test
public void startImplementByCode() {
try {
//TOB 无源入库
// passiveWarehouseReceiptToB.startImplementByStockTime("2025-03-16 20:20:20", "2025-03-16 20:20:20");
//TOB 无源入库退款完成
passiveWarehouseReceiptToB.startImplementByTradeTime("2025-03-16 20:20:20", "2025-03-16 20:20:20");
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -30,6 +30,8 @@ public class DeleteU8cDataUtilTest4 {
// deleteU8cDataUtil.cancelSignatureIcGeneralHV2("'0001A110000000001TH6', '0001A1100000000VKCOK'");
//销售出库单签字 已测试
// deleteU8cDataUtil.saleOutSign("'0001A110000000001TH6', '0001A1100000000VKCOK'");
deleteU8cDataUtil.abandoningReviewAccReceDoc();
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -135,6 +135,20 @@
<!--查询已审核的应收单-->
<select id="abandonmentAccountsReceivableDoc" parameterType="com.hzya.frame.deletedata.vo.DeleteSoSaleVo" resultMap="get-SoSaleByDelete-result">
-- SELECT
-- a.djbh,
-- a.dwbm,
-- a.vouchid,
-- b.unitname,
-- b.unitcode
-- FROM
-- arap_djzb a
-- LEFT JOIN bd_corp b ON b.pk_corp = a.DWBM
-- WHERE
-- a.dr = 0
-- AND a.XSLXBM = '0001A110000000001TH6'
-- AND a.djdl = 'ys'
-- and a.spzt = 1
SELECT
a.djbh,
a.dwbm,
@ -146,9 +160,10 @@
LEFT JOIN bd_corp b ON b.pk_corp = a.DWBM
WHERE
a.dr = 0
AND a.XSLXBM = '0001A110000000001TH6'
AND a.djdl = 'ys'
and a.spzt = 1
AND a.spzt = 1
and a.djbh = 'YS2503170119'
and b.unitname = '上海丽知品牌管理有限公司'
</select>
<!--查询自由态的应收单-->

View File

@ -72,5 +72,9 @@ public class PassiveStorageResponse extends ReturnMessageBasics {
private PassiveStorageResponse.Header header;
//退款完成时间
private String refundedAt;
//计算应收
private String def1;
//计算公式
private String def2;
}
}