refactor(buildpackage): 优化OFS订单同步逻辑与收发类别映射
- 重构销售退货插件初始化类,删除无效代码行。 - 引入收发类别实体以支持不同业务类型。- 在U8C销售退货插件中集成店铺档案和收发类别。 - 更新档案缓存工具以包含收发类别初始化。 - 扩展售后订单工具以支持批量查询OFS售后订单。 - 优化OFS订单同步流程,包括匹配售后和销售订单。 - 为 GoodsRertunSonDetailsDto 添加店铺和收发类别属性。 以上改动旨在提升订单处理效率及扩展系统对多样订单类型的适配能力。
This commit is contained in:
parent
68bd9861f9
commit
aa4cf58e69
|
@ -545,7 +545,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
|
|||
//收发类别
|
||||
saleorderRequestParentDto.setPk_defdoc3(bdRdclEntity.getPkRdcl());
|
||||
saleorderRequestParentDto.setVdef3(bdRdclEntity.getRdname());
|
||||
|
||||
|
||||
saleorderRequestDto.setParentvo(saleorderRequestParentDto);
|
||||
|
||||
List<SaleorderRequestChildrenDto> saleorderRequestChildrenDtoList = new ArrayList<>();
|
||||
|
|
|
@ -14,6 +14,7 @@ import com.hzya.frame.plugin.lets.ofs.dao.ITocofsReturngoodsDao;
|
|||
import com.hzya.frame.plugin.lets.ofs.dao.ITocofsReturngoodsDetailedDao;
|
||||
import com.hzya.frame.plugin.lets.ofs.entity.TocofsReturngoodsDetailedEntity;
|
||||
import com.hzya.frame.plugin.lets.ofs.entity.TocofsReturngoodsEntity;
|
||||
import com.hzya.frame.plugin.lets.ofs.entity.TocofsSaleoutDetailedEntity;
|
||||
import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo;
|
||||
import com.hzya.frame.plugin.lets.resultvo.CalculateDateVo;
|
||||
import com.hzya.frame.plugin.lets.u8cdto.*;
|
||||
|
@ -21,6 +22,10 @@ import com.hzya.frame.plugin.lets.util.*;
|
|||
import com.hzya.frame.split.SplitListByCountUtil;
|
||||
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto;
|
||||
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto;
|
||||
import com.hzya.frame.ttxofs.dto.ofssalesordersearch.DetailsDto;
|
||||
import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchData;
|
||||
import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchDetails;
|
||||
import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchHeader;
|
||||
import com.hzya.frame.ttxofs.dto.stock.StockinOrderSearchResponse;
|
||||
import com.hzya.frame.ttxofs.service.OfsUnifiedService;
|
||||
import com.hzya.frame.web.entity.JsonResultEntity;
|
||||
|
@ -105,6 +110,9 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
@Autowired
|
||||
private OfsStandardUtil ofsStandardUtil;
|
||||
|
||||
@Autowired
|
||||
private AfterSalesOrderUtil afterSalesOrderUtil;
|
||||
|
||||
@Autowired
|
||||
private RdclUtil rdclUtil;
|
||||
|
||||
|
@ -367,7 +375,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
// 查询U8C业务流程
|
||||
BdBusitypeEntity bdBusitypeEntity = u8cOperationFlow();
|
||||
// 查询销售收发类别
|
||||
BdRdclEntity bdRdclEntity = rdclUtil.queryRdClObject("202");
|
||||
// BdRdclEntity bdRdclEntity = rdclUtil.queryRdClObject("202");
|
||||
|
||||
if (bdBusitypeEntity != null && summaryDimensionMap != null) {
|
||||
Iterator<Map.Entry<String, List<GoodsRertunSonDetailsDto>>> iterator = summaryDimensionMap.entrySet().iterator();
|
||||
|
@ -388,6 +396,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
BdCumandocEntity bdCumandocEntity = oldValue.get(0).getBdCumandocEntity();//客商管理档案
|
||||
BdCubasdocEntity bdCubasdocEntity = oldValue.get(0).getBdCubasdocEntity();//客商基本档案
|
||||
BdDefdocEntity platformArchives = oldValue.get(0).getPlatformArchives();//U8C平台档案
|
||||
BdDefdocEntity shopArchives = oldValue.get(0).getShopArchives();//U8C店铺档案
|
||||
BdRdclEntity bdRdclEntity = oldValue.get(0).getBdRdclEntity();//U8C收发类别
|
||||
|
||||
try {
|
||||
checkArchives(oldValue.get(0));
|
||||
|
@ -422,7 +432,10 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
saleorderRequestParentDto.setPk_defdoc3(bdRdclEntity.getPkRdcl());
|
||||
saleorderRequestParentDto.setVdef3(bdRdclEntity.getRdname());
|
||||
|
||||
//TODO 2024年8月8日 17:17:58 店铺档案自定义项1,先不传,后续维护好之后再传!
|
||||
//2024年8月8日 17:17:58 店铺档案自定义项1,先不传,后续维护好之后再传!
|
||||
//店铺
|
||||
saleorderRequestParentDto.setPk_defdoc1(shopArchives.getPkDefdoc());
|
||||
saleorderRequestParentDto.setVdef1(shopArchives.getDocname());
|
||||
|
||||
saleorderRequestDto.setParentvo(saleorderRequestParentDto);
|
||||
|
||||
|
@ -431,13 +444,10 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
|
||||
//把汇总好的出库单明细行合并成一行
|
||||
GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = groupMergeDetailedRows(oldValue);
|
||||
|
||||
//存货管理档案:取发货公司的存货管理档案
|
||||
BdInvmandocEntity bdInvmandocEntity = queryInventoryMan(goodsRertunSonDetailsDto, bdCalbodyEntity.getPkCorp());
|
||||
|
||||
//存货基础档案
|
||||
BdInvbasdocEntity bdInvbasdocEntity = queryStockBasicArchives(bdInvmandocEntity.getPkInvmandoc(), deliverGoodsCorp.getPkCorp());
|
||||
|
||||
//根据存货基础档案编码,查询当前存货的税率
|
||||
BdTaxitemsEntity bdTaxitemsEntity1 = queryBdTaxitems(bdInvbasdocEntity.getInvcode());
|
||||
|
||||
|
@ -552,12 +562,34 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
try {
|
||||
//初始化档案缓存
|
||||
tocReturnBasicArchivesCacheUtil.initCache();
|
||||
//查询OFS售后入库单对应的售后订单
|
||||
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchData = queryBatchAfterSalesOrder(returnGoodHeaderDetailsDataDtoList1);
|
||||
findAfterSalesOrder(rerturnGoodsOrderSearchData, returnGoodHeaderDetailsDataDtoList1);
|
||||
//查询OFS售后订单对应的OFS销售订单
|
||||
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtos = queryBatchOfsOrder(rerturnGoodsOrderSearchData);
|
||||
findOfsOrder(headerDetailsDtos, returnGoodHeaderDetailsDataDtoList1);
|
||||
|
||||
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
||||
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
||||
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||
|
||||
//OFS售后订单
|
||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData1 = header.getRerturnGoodsOrderSearchData();
|
||||
Assert.notNull(rerturnGoodsOrderSearchData1, "无法关联到OFS售后订单 售后入库单号:{}", header.getCode());
|
||||
//OFS销售订单
|
||||
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto();
|
||||
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto.getHeader();
|
||||
List<DetailsDto> details1 = headerDetailsDto.getDetails();
|
||||
Assert.notNull(headerDetailsDto, "无法关联到OFS销售订单 售后入库单号:{}", header.getCode());
|
||||
|
||||
//如果不存在,则默认一个
|
||||
if (header1.getSubOrderType() == null || "".equals(header1.getSubOrderType())) {
|
||||
header1.setSubOrderType("SALES");
|
||||
}
|
||||
BdRdclEntity bdRdclEntity = TocReturnBasicArchivesCacheUtil.stringBdRdclEntityHashMap.get(header1.getSubOrderType());
|
||||
Assert.notNull(bdRdclEntity, "根据业务类型({})没有匹配到U8C业务类型", header1.getSubOrderType());
|
||||
|
||||
//表头公司:通过名称匹配U8C公司
|
||||
// String corpName = "上海丽知品牌管理有限公司";
|
||||
Assert.notNull(header.getCompanyCode(), "O货主编码不能为空");
|
||||
|
@ -632,6 +664,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
goodsRertunSonDetailsDto.setBdCumandocEntity(bdCumandocEntity);
|
||||
goodsRertunSonDetailsDto.setBdCubasdocEntity(bdCubasdocEntity);
|
||||
goodsRertunSonDetailsDto.setPlatformArchives(bdDefdocEntity);
|
||||
goodsRertunSonDetailsDto.setBdRdclEntity(bdRdclEntity);
|
||||
goodsRertunSonDetailsDto.setShopArchives(bdDefdocEntity1);
|
||||
|
||||
BeanUtil.copyPropertiesV2(stockinB, goodsRertunSonDetailsDto);
|
||||
sonDetailsDtoList.add(goodsRertunSonDetailsDto);
|
||||
|
@ -694,6 +728,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
|
||||
/**
|
||||
* 分组汇总:公司+店铺+仓库+SKU+出库类型,数量合并相加
|
||||
* 修改为:公司+店铺+仓库+SKU+收发类别+部门,数量合并相加
|
||||
*
|
||||
* @author liuyang
|
||||
*/
|
||||
|
@ -703,6 +738,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = goodsRertunSonDetailsDtos.get(i);
|
||||
//2024年8月6日 10:35:25表头对象用于带出表头相关的分组汇总信息
|
||||
StockinOrderSearchResponse.StockinOrder.StockinH header = goodsRertunSonDetailsDto.getHeader();
|
||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header.getRerturnGoodsOrderSearchData();//OFS售后订单
|
||||
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto();//OFS销售订单
|
||||
|
||||
//公司
|
||||
BdCorpEntity bdCorpEntity = goodsRertunSonDetailsDto.getBdCorpEntity();
|
||||
|
@ -713,7 +750,9 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
//SKU
|
||||
String skuCode = goodsRertunSonDetailsDto.getSkuCode();
|
||||
//出库类型
|
||||
String refOrderType = header.getRefOrderType();
|
||||
// String refOrderType = header.getRefOrderType();
|
||||
//收发类别
|
||||
BdRdclEntity bdRdclEntity = goodsRertunSonDetailsDto.getBdRdclEntity();
|
||||
|
||||
StringBuffer summaryDimensionStr = new StringBuffer();
|
||||
if (bdCorpEntity != null && bdCorpEntity.getPkCorp() != null) {
|
||||
|
@ -744,12 +783,20 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
}
|
||||
summaryDimensionStr.append(ADD);
|
||||
|
||||
if (refOrderType != null && !"".equals(refOrderType)) {
|
||||
summaryDimensionStr.append(refOrderType);
|
||||
// if (refOrderType != null && !"".equals(refOrderType)) {
|
||||
// summaryDimensionStr.append(refOrderType);
|
||||
// } else {
|
||||
// summaryDimensionStr.append(NOTHING);
|
||||
// }
|
||||
|
||||
if (bdRdclEntity != null && bdRdclEntity.getRdcode() != null) {
|
||||
summaryDimensionStr.append(bdRdclEntity.getRdcode());
|
||||
} else {
|
||||
summaryDimensionStr.append(NOTHING);
|
||||
}
|
||||
|
||||
//TODO 部门?O还未开发好,待定
|
||||
|
||||
goodsRertunSonDetailsDto.setSummaryDimensionStr(summaryDimensionStr.toString());
|
||||
}
|
||||
logger.info("TOC:{} 个出库单对象需要汇总", goodsRertunSonDetailsDtos.size());
|
||||
|
@ -823,11 +870,16 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
|
||||
for (int i = 0; i < sonDetailsDtoList.size(); i++) {
|
||||
GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(i);
|
||||
StockinOrderSearchResponse.StockinOrder.StockinH header = goodsRertunSonDetailsDto.getHeader();
|
||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header.getRerturnGoodsOrderSearchData();
|
||||
|
||||
//取对应的售后订单明细,主要是取这个价格
|
||||
RerturnGoodsOrderSearchDetails afterSalesOrder = findAfterSalesOrderV2(goodsRertunSonDetailsDto, rerturnGoodsOrderSearchData);
|
||||
|
||||
//实付金额/实发数量
|
||||
Assert.notNull(goodsRertunSonDetailsDto.getTotalAmount(), "退货入库单总金额不能为空 明细行对象:{}", JSON.toJSONString(goodsRertunSonDetailsDto));
|
||||
Assert.notNull(afterSalesOrder.getTotalAmount(), "退货入库单总金额不能为空 明细行对象:{}", JSON.toJSONString(goodsRertunSonDetailsDto));
|
||||
Assert.notNull(goodsRertunSonDetailsDto.getReceivedQty(), "实收数量不能为空 明细行对象:{}", JSON.toJSONString(goodsRertunSonDetailsDto));
|
||||
BigDecimal totalPayAmountBigDecimal = new BigDecimal(goodsRertunSonDetailsDto.getTotalAmount());
|
||||
BigDecimal totalPayAmountBigDecimal = new BigDecimal(afterSalesOrder.getTotalAmount());
|
||||
BigDecimal shipQtyBigDecimal = new BigDecimal(goodsRertunSonDetailsDto.getReceivedQty());
|
||||
|
||||
groupTotalPayAmount = groupTotalPayAmount.add(totalPayAmountBigDecimal);
|
||||
|
@ -836,7 +888,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(0);
|
||||
goodsRertunSonDetailsDto.setGroupShipQty(groupShipQty);
|
||||
goodsRertunSonDetailsDto.setGroupTotalPayAmount(groupTotalPayAmount);
|
||||
logger.info("{}个明细行发生了合并!", sonDetailsDtoList.size());
|
||||
logger.info("TOB{}个明细行发生了合并!", sonDetailsDtoList.size());
|
||||
return goodsRertunSonDetailsDto;
|
||||
} else {
|
||||
logger.info("sonDetailsDtoList集合是空的!");
|
||||
|
@ -984,4 +1036,169 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
}
|
||||
return allHeaderDetailsDtoArrayList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量查询售后订单
|
||||
*
|
||||
* @param returnGoodHeaderDetailsDataDtoList1 OFS售后入库单
|
||||
* @author liuyang
|
||||
*/
|
||||
private List<RerturnGoodsOrderSearchData> queryBatchAfterSalesOrder(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) {
|
||||
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchDataList = new ArrayList<>();
|
||||
if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
||||
try {
|
||||
List<List<StockinOrderSearchResponse.StockinOrder>> splitListByCount = SplitListByCountUtil.splitListByCount(returnGoodHeaderDetailsDataDtoList1, 50);
|
||||
for (int i = 0; i < splitListByCount.size(); i++) {
|
||||
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = splitListByCount.get(i);
|
||||
//50个原始一个批次进行分割
|
||||
StringBuffer idStr = new StringBuffer();
|
||||
for (int j = 0; j < stockinOrderList.size(); j++) {
|
||||
StockinOrderSearchResponse.StockinOrder stockinOrder = stockinOrderList.get(j);
|
||||
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||
|
||||
idStr.append(header.getRefOrderCode());
|
||||
idStr.append(",");
|
||||
}
|
||||
String idsStr = idStr.substring(0, idStr.length() - 1);
|
||||
|
||||
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
||||
queryOfsSoSaleOutVo.setCode(idsStr);
|
||||
afterSalesOrderUtil.getBatchOfsRertunOrder(queryOfsSoSaleOutVo, rerturnGoodsOrderSearchDataList, 1L);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("批量查询售后订单", e);
|
||||
}
|
||||
}
|
||||
return rerturnGoodsOrderSearchDataList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 匹配售后订单
|
||||
*
|
||||
* @param rerturnGoodsOrderSearchDataList OFS售后订单集合
|
||||
* @param returnGoodHeaderDetailsDataDtoList1 OFS售后入库单集合
|
||||
* @author liuyang
|
||||
*/
|
||||
private void findAfterSalesOrder(List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchDataList, List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) throws Exception {
|
||||
if (rerturnGoodsOrderSearchDataList != null && rerturnGoodsOrderSearchDataList.size() > 0 && returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
||||
try {
|
||||
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
||||
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
||||
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||
|
||||
Assert.notNull(header.getId(), "OFS售后入库单主键不能为空!");
|
||||
for (int j = 0; j < rerturnGoodsOrderSearchDataList.size(); j++) {
|
||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = rerturnGoodsOrderSearchDataList.get(j);
|
||||
RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData.getHeader();
|
||||
List<RerturnGoodsOrderSearchDetails> details1 = rerturnGoodsOrderSearchData.getDetails();
|
||||
if (header.getId().equals(header1.getRefOrderId())) {
|
||||
header.setRerturnGoodsOrderSearchData(rerturnGoodsOrderSearchData);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("findAfterSalesOrder方法抛出异常", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过售后入库单明细行,查找售后订单明细行
|
||||
*
|
||||
* @param stockinB 售后订单明细行
|
||||
* @param ofsRertunOrder OFS售后订单
|
||||
* @author liuyang
|
||||
*/
|
||||
private RerturnGoodsOrderSearchDetails findAfterSalesOrderV2(StockinOrderSearchResponse.StockinOrder.StockinB stockinB, RerturnGoodsOrderSearchData ofsRertunOrder) {
|
||||
Assert.notNull(stockinB, "stockinB不能为空!");
|
||||
Assert.notNull(ofsRertunOrder, "saleOrderMessageDto不能为空!");
|
||||
|
||||
Assert.notNull(ofsRertunOrder.getHeader(), "售后订表头不能为空!");
|
||||
Assert.notNull(ofsRertunOrder.getDetails(), "售后订单表头");
|
||||
RerturnGoodsOrderSearchHeader header = ofsRertunOrder.getHeader();
|
||||
List<RerturnGoodsOrderSearchDetails> details1 = ofsRertunOrder.getDetails();
|
||||
if (details1 == null || details1.size() == 0) {
|
||||
Assert.state(false, "售后订单明细行不能为空,size不能为0!");
|
||||
}
|
||||
for (int i = 0; i < details1.size(); i++) {
|
||||
RerturnGoodsOrderSearchDetails rerturnGoodsOrderSearchDetails = details1.get(i);
|
||||
if (rerturnGoodsOrderSearchDetails.getId().equals(stockinB.getRefOrderDetailId())) {
|
||||
return rerturnGoodsOrderSearchDetails;
|
||||
}
|
||||
}
|
||||
Assert.state(false, "通过售后入库单号({})无法匹配到售后订单", stockinB.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过售后订单,匹配OFS销售订单
|
||||
*
|
||||
* @author liuyang
|
||||
*/
|
||||
private List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> queryBatchOfsOrder(List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchData) throws Exception {
|
||||
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoArrayList = new ArrayList<>();
|
||||
|
||||
if (rerturnGoodsOrderSearchData != null && rerturnGoodsOrderSearchData.size() > 0) {
|
||||
try {
|
||||
//每50个作为一批,拆分
|
||||
List<List<RerturnGoodsOrderSearchData>> lists = SplitListByCountUtil.splitListByCount(rerturnGoodsOrderSearchData, 50);
|
||||
for (int i = 0; i < lists.size(); i++) {
|
||||
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchData1 = lists.get(i);
|
||||
StringBuffer codes = new StringBuffer();
|
||||
for (int j = 0; j < rerturnGoodsOrderSearchData.size(); j++) {
|
||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData2 = rerturnGoodsOrderSearchData.get(j);
|
||||
RerturnGoodsOrderSearchHeader header = rerturnGoodsOrderSearchData2.getHeader();
|
||||
List<RerturnGoodsOrderSearchDetails> details = rerturnGoodsOrderSearchData2.getDetails();
|
||||
|
||||
codes.append(header.getCode());
|
||||
codes.append(",");
|
||||
}
|
||||
String codesStr = codes.substring(0, codes.length() - 1);
|
||||
|
||||
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
||||
queryOfsSoSaleOutVo.setCode(codesStr);
|
||||
ofsStandardUtil.getOfsSaleOrder(queryOfsSoSaleOutVo, headerDetailsDtoArrayList, 1L);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("queryBatchOfsOrder方法抛出异常", e);
|
||||
}
|
||||
}
|
||||
return headerDetailsDtoArrayList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 匹配OFS销售订单
|
||||
*
|
||||
* @param headerDetailsDtoList OFS销售订单
|
||||
* @param returnGoodHeaderDetailsDataDtoList1 ofs售后入库单
|
||||
* @author liuyang
|
||||
*/
|
||||
private void findOfsOrder(List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoList, List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) {
|
||||
if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0 && returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
|
||||
try {
|
||||
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
|
||||
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i);
|
||||
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
|
||||
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
|
||||
|
||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header.getRerturnGoodsOrderSearchData();//OFS售后订单
|
||||
RerturnGoodsOrderSearchHeader header2 = rerturnGoodsOrderSearchData.getHeader();
|
||||
List<RerturnGoodsOrderSearchDetails> details2 = rerturnGoodsOrderSearchData.getDetails();
|
||||
|
||||
for (int j = 0; j < headerDetailsDtoList.size(); j++) {
|
||||
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = headerDetailsDtoList.get(j);
|
||||
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto.getHeader();
|
||||
List<DetailsDto> details1 = headerDetailsDto.getDetails();
|
||||
if (header2.getRefOrderId().equals(header1.getId())) {
|
||||
header.setHeaderDetailsDto(headerDetailsDto);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("findOfsOrder方法抛出异常", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -94,4 +94,14 @@ public class GoodsRertunSonDetailsDto extends StockinOrderSearchResponse.Stockin
|
|||
* U8C平台档案
|
||||
*/
|
||||
private BdDefdocEntity platformArchives;
|
||||
|
||||
/**
|
||||
* U8C店铺档案
|
||||
*/
|
||||
private BdDefdocEntity shopArchives;
|
||||
|
||||
/**
|
||||
* OFS收发类别
|
||||
*/
|
||||
private BdRdclEntity bdRdclEntity;
|
||||
}
|
|
@ -56,6 +56,24 @@ public class AfterSalesOrderUtil {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量查询OFS售后订单
|
||||
*
|
||||
* @author liuyang
|
||||
*/
|
||||
// public List<SaleOrderMessageDto> queryAfterSalesOrder(StockinOrderSearchResponse.StockinOrder.StockinH header) throws Exception {
|
||||
// if (header != null && !"".equals(header.getCode())) {
|
||||
// //根据售后入库单、查询销售订单
|
||||
// RerturnGoodsOrderSearchData ofsRertunOrder = getOfsRertunOrder(header.getRefOrderCode());
|
||||
// if (ofsRertunOrder == null || ofsRertunOrder.getHeader() == null || ofsRertunOrder.getDetails() == null) {
|
||||
// Assert.state(false, "根据OFS售后订单编码{},无法查询到售后订单信息!", header.getRefOrderCode());
|
||||
// }
|
||||
// } else {
|
||||
// logger.error("queryAfterSalesOrder方法入参为null(header为null!)");
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 根据售后订单号,查询售后订单
|
||||
*
|
||||
|
@ -91,6 +109,46 @@ public class AfterSalesOrderUtil {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据售后订单号,查询售后订单
|
||||
*
|
||||
* @param queryOfsSoSaleOutVo 查询条件
|
||||
* @param rerturnGoodsOrderSearchDataList 需要填充原始的数组集合
|
||||
* @param pageNo 页码
|
||||
* @author liuyang
|
||||
*/
|
||||
public void getBatchOfsRertunOrder(QueryOfsSoSaleOutVo queryOfsSoSaleOutVo, List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchDataList, Long pageNo) throws Exception {
|
||||
Assert.notNull(queryOfsSoSaleOutVo, "queryOfsSoSaleOutVo不能为空");
|
||||
Assert.notNull(rerturnGoodsOrderSearchDataList, "rerturnGoodsOrderSearchDataList不能为空");
|
||||
Assert.notNull(pageNo, "pageNo不能为空");
|
||||
|
||||
Long pageSize = 200L;
|
||||
// Long pageNo = 1L;
|
||||
|
||||
// QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
|
||||
queryOfsSoSaleOutVo.setPageNo(pageNo);
|
||||
queryOfsSoSaleOutVo.setPageSize(pageSize);
|
||||
// queryOfsSoSaleOutVo.setCode(refOrderCode);
|
||||
|
||||
InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
|
||||
interfaceParamDto.setApi("ofs.returnOrder.search");
|
||||
interfaceParamDto.setData(JSON.toJSONString(queryOfsSoSaleOutVo));
|
||||
RerturnGoodsOrderSearchJsonRootBean rerturnGoodsOrderSearchJsonRootBean = (RerturnGoodsOrderSearchJsonRootBean) ofsUnifiedService.unified(interfaceParamDto);
|
||||
if (rerturnGoodsOrderSearchJsonRootBean != null) {
|
||||
if ("false".equals(rerturnGoodsOrderSearchJsonRootBean.getError()) && "0".equals(rerturnGoodsOrderSearchJsonRootBean.getCode()) && "Success".equals(rerturnGoodsOrderSearchJsonRootBean.getMsg())) {
|
||||
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchJsonRootBeanData = rerturnGoodsOrderSearchJsonRootBean.getData();
|
||||
if (rerturnGoodsOrderSearchJsonRootBeanData != null && rerturnGoodsOrderSearchJsonRootBeanData.size() > 0) {
|
||||
rerturnGoodsOrderSearchDataList.addAll(rerturnGoodsOrderSearchJsonRootBeanData);
|
||||
getBatchOfsRertunOrder(queryOfsSoSaleOutVo, rerturnGoodsOrderSearchDataList, ++pageNo);
|
||||
}
|
||||
} else {
|
||||
logger.error("查询售后订单失败,接口返回结果:{}", JSON.toJSON(rerturnGoodsOrderSearchJsonRootBean));
|
||||
}
|
||||
} else {
|
||||
logger.error("rerturnGoodsOrderSearchJsonRootBean为空(返回结果为空),查询入参条件:{}!", JSON.toJSON(queryOfsSoSaleOutVo));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询OFS销售订单
|
||||
*
|
||||
|
|
|
@ -55,6 +55,9 @@ public class TocReturnBasicArchivesCacheUtil {
|
|||
@Autowired
|
||||
private IBdDefdocDao iBdDefdocDao;
|
||||
|
||||
@Autowired
|
||||
private IBdRdclDao iBdRdclDao;
|
||||
|
||||
/**
|
||||
* 初始化公司档案-表头公司
|
||||
* 2024年7月31日 11:16:23
|
||||
|
@ -289,6 +292,25 @@ public class TocReturnBasicArchivesCacheUtil {
|
|||
}
|
||||
}
|
||||
|
||||
public static Map<String, BdRdclEntity> stringBdRdclEntityHashMap = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 初始化收发类别
|
||||
*/
|
||||
private Map<String, BdRdclEntity> initBdRdcl() {
|
||||
BdRdclEntity bdRdclEntity = new BdRdclEntity();
|
||||
bdRdclEntity.setDr(0);
|
||||
bdRdclEntity.setDataSourceCode("lets_u8c");
|
||||
List<BdRdclEntity> bdRdclEntityList = iBdRdclDao.query(bdRdclEntity);
|
||||
if (bdRdclEntityList != null && bdRdclEntityList.size() > 0) {
|
||||
for (int i = 0; i < bdRdclEntityList.size(); i++) {
|
||||
BdRdclEntity bdRdclEntity1 = bdRdclEntityList.get(i);
|
||||
stringBdRdclEntityHashMap.put(bdRdclEntity1.getRdcode(), bdRdclEntity1);
|
||||
}
|
||||
}
|
||||
return stringBdRdclEntityHashMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理缓存
|
||||
*
|
||||
|
@ -307,6 +329,7 @@ public class TocReturnBasicArchivesCacheUtil {
|
|||
stringBdCubasdocEntityHashMap.clear();
|
||||
stringBdDefdocEntityHashMap.clear();
|
||||
shopDefdocEntityHashMap.clear();
|
||||
stringBdRdclEntityHashMap.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -329,5 +352,6 @@ public class TocReturnBasicArchivesCacheUtil {
|
|||
initBdCubasdoc();
|
||||
initSourcePlatform();
|
||||
initShopDiy();
|
||||
initBdRdcl();
|
||||
}
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
package com.hzya.frame.ttxofs.dto.returngoodordersearch;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -8,7 +10,7 @@ import java.util.List;
|
|||
* @author bejson.com (i@bejson.com)
|
||||
* @website http://www.bejson.com/java2pojo/
|
||||
*/
|
||||
@lombok.Data
|
||||
@Data
|
||||
public class RerturnGoodsOrderSearchData {
|
||||
private RerturnGoodsOrderSearchHeader header;
|
||||
private List<RerturnGoodsOrderSearchDetails> details;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.hzya.frame.ttxofs.dto.stock;
|
||||
|
||||
import com.hzya.frame.ttxofs.basics.ReturnMessageBasics;
|
||||
import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchData;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -19,7 +20,6 @@ public class StockinOrderSearchResponse extends ReturnMessageBasics {
|
|||
|
||||
@Data
|
||||
public static class StockinH {
|
||||
|
||||
private String id;
|
||||
private String clientCode;
|
||||
private String companyCode;
|
||||
|
@ -68,11 +68,12 @@ public class StockinOrderSearchResponse extends ReturnMessageBasics {
|
|||
private String tradeSuccessAt;
|
||||
private String refundedAt;//OFS退款完成时间
|
||||
private String refundStatus;//OFS退款完成状态
|
||||
private RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData;//OFS售后订单
|
||||
private com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto;//OFS销售订单
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class StockinB {
|
||||
|
||||
private String id;
|
||||
private String receiptId;
|
||||
private String receiptCode;
|
||||
|
@ -101,10 +102,8 @@ public class StockinOrderSearchResponse extends ReturnMessageBasics {
|
|||
private String lastUpdated;
|
||||
private String lastUpdatedBy;
|
||||
private String discountPrice;
|
||||
|
||||
//表头对象
|
||||
private StockinH returnGoodSearchHeaderDto;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue