数据库查询和缓存初始化优化- 修正了BdCubasdocEntity和BdTaxitemsEntity中的数据库查询逻辑,以提高查询效率。

- 在TocReturnBasicArchivesCacheUtil中重构了缓存初始化方法,以支持参数化查询并减少数据库负担。
- 调整了SoSaleReturnPluginInitializerToC中测试代码,以验证新的缓存初始化逻辑。此更改通过优化数据库查询和改进缓存策略,提高了系统的整体性能和可靠性。
This commit is contained in:
liuy 2024-09-18 18:40:34 +08:00
parent 04843e5952
commit 42ef86c389
7 changed files with 285 additions and 80 deletions

View File

@ -232,6 +232,10 @@
<if test="modifytime_start_time!=null and modifytime_start_time!=''">and ts >= #{modifytime_start_time}</if>
<if test="modifytime_end_time!=null and modifytime_end_time!=''">and ts &lt;= #{modifytime_end_time}</if>
<if test="custcodes!=null and custcodes!=''">
and custcode in (${custcodes})
</if>
</trim>
<if test=" sort == ''.toString() "> order by sorts asc</if>
<if test=" sort !='' and sort!=null and order !='' and order!=null ">order by ${sort} ${order}</if>

View File

@ -207,7 +207,7 @@
and bd_invbasdoc.invcode = #{invcode}
</if>
<if test="invcodes!=null and invcodes!=''">
and bd_invbasdoc.invcode in ${invcodes}
and bd_invbasdoc.invcode in (${invcodes})
</if>
</select>

View File

@ -882,7 +882,7 @@
insert into tocofs_returngoods_detailed(id,newPushDate3,newTransmitInfo3,newState3,newSystemNumber3,newSystemPrimary3)
values
<foreach collection="list" item="entity" separator=",">
(#{entity.id},#{entity.newpushdate3},#{entity.newtransmitinfo3},#{entity.newstate3},#{entity.newsystemnumber3},#{entity.newSystemPrimary3})
(#{entity.id},#{entity.newpushdate3},#{entity.newtransmitinfo3},#{entity.newstate3},#{entity.newsystemnumber3},#{entity.newsystemprimary3})
</foreach>
on duplicate key update
id = values(id),

View File

@ -962,12 +962,12 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) {
try {
//初始化档案缓存
CacheTocMapVoV2 cacheTocMapVoV2 = tocReturnBasicArchivesCacheUtil.initCache();
CacheTocMapVoV2 cacheTocMapVoV2 = tocReturnBasicArchivesCacheUtil.initCache(returnGoodHeaderDetailsDataDtoList1);
//查询OFS售后入库单对应的售后订单
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchData = queryBatchAfterSalesOrder(returnGoodHeaderDetailsDataDtoList1);
findAfterSalesOrder(rerturnGoodsOrderSearchData, returnGoodHeaderDetailsDataDtoList1);
//查询OFS售后订单对应的OFS销售订单
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtos = queryBatchOfsOrder(rerturnGoodsOrderSearchData);
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtos = queryBatchOfsOrder(returnGoodHeaderDetailsDataDtoList1);
findOfsOrder(headerDetailsDtos, returnGoodHeaderDetailsDataDtoList1);
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) {
@ -994,6 +994,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
//表头公司通过名称匹配U8C公司
// String corpName = "上海丽知品牌管理有限公司";
//TODO 测试SHOF
header.setCompanyCode("SHOF");
Assert.notNull(header.getCompanyCode(), "O货主编码不能为空");
BdCorpEntity bdCorpEntity = cacheTocMapVoV2.getStringBdCorpEntityMap().get(header.getCompanyCode());
Assert.notNull(bdCorpEntity, "根据O公司编码(货主编码)({})没有匹配到U8C公司档案", header.getCompanyCode());
@ -1058,8 +1060,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
BdInvmandocEntity bdInvmandocEntity = cacheTocMapVoV2.getStringBdInvmandocEntityMap().get(stockinB.getSkuCode() + bdCorpEntity.getPkCorp());
Assert.notNull(bdInvmandocEntity, "无法匹配到存货管理档案 货品sku{} 公司:{}", stockinB.getSkuCode(), bdCorpEntity.getPkCorp());
//存货基本档案
BdInvbasdocEntity bdInvbasdocEntity = cacheTocMapVoV2.getStringBdInvbasdocEntityMap().get(bdInvmandocEntity.getPkInvmandoc() + bdCorpEntity.getPkCorp());
Assert.notNull(bdInvbasdocEntity, "无法匹配到存货基本档案 存货管理主键:{} 公司:{}", bdInvmandocEntity.getPkInvmandoc(), bdCorpEntity.getPkCorp());
BdInvbasdocEntity bdInvbasdocEntity = cacheTocMapVoV2.getStringBdInvbasdocEntityMap().get(stockinB.getSkuCode());
Assert.notNull(bdInvbasdocEntity, "无法匹配到存货基本档案 存货编码:{}", stockinB.getSkuCode());
//存货税率
BdTaxitemsEntity bdTaxitemsEntity = cacheTocMapVoV2.getStringBdTaxitemsEntityMap().get(bdInvmandocEntity.getInvcode());
Assert.notNull(bdTaxitemsEntity, "无法匹配到存货税率 存货编码:{}", bdInvmandocEntity.getInvcode());
@ -1557,7 +1559,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = rerturnGoodsOrderSearchDataList.get(j);
RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData.getHeader();
List<RerturnGoodsOrderSearchDetails> details1 = rerturnGoodsOrderSearchData.getDetails();
if (header.getId().equals(header1.getRefOrderId())) {
if (header.getRefOrderId().equals(header1.getId())) {
header.setRerturnGoodsOrderSearchData(rerturnGoodsOrderSearchData);
}
}
@ -1599,25 +1601,31 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
/**
* 通过售后订单匹配OFS销售订单
*
* @param returnGoodHeaderDetailsDataDtoList1 OFS售后入库单集合
* @author liuyang
*/
private List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> queryBatchOfsOrder(List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchData) throws Exception {
private List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> queryBatchOfsOrder(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList1) throws Exception {
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoArrayList = new ArrayList<>();
if (rerturnGoodsOrderSearchData != null && rerturnGoodsOrderSearchData.size() > 0) {
if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.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();
List<List<StockinOrderSearchResponse.StockinOrder>> splitListByCount = SplitListByCountUtil.splitListByCount(returnGoodHeaderDetailsDataDtoList1, 50);
for (int i = 0; i < splitListByCount.size(); i++) {
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = splitListByCount.get(i);
codes.append(header.getCode());
codes.append(",");
StringBuffer codes = 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();
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData1 = header.getRerturnGoodsOrderSearchData();//OFS售后订单
if (rerturnGoodsOrderSearchData1 != null) {
RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData1.getHeader();
List<RerturnGoodsOrderSearchDetails> details1 = rerturnGoodsOrderSearchData1.getDetails();
codes.append(header1.getRefOrderCode());
codes.append(",");
}
}
String codesStr = codes.substring(0, codes.length() - 1);

View File

@ -1,5 +1,6 @@
package com.hzya.frame.plugin.lets.util;
import cn.hutool.core.lang.Assert;
import com.hzya.frame.plugin.lets.constant.OverallConstant;
import com.hzya.frame.plugin.lets.dao.*;
import com.hzya.frame.plugin.lets.entity.*;
@ -508,9 +509,12 @@ public class TocOrderBasicArchivesCacheUtil {
/**
* 初始化缓存
*
* @param headerDetailsDtoList OFS销售出库单对象
* @author liuyang
*/
public CacheTocMapVo initCache(List<com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto> headerDetailsDtoList) throws Exception {
Assert.notNull(headerDetailsDtoList, "headerDetailsDtoList不能为空");
// clearCache();
List<DetailsDto> detailsDtos = initOfsDetailsDto(headerDetailsDtoList);
List<HeaderDto> headerDtoList = initOFsHeadDto(headerDetailsDtoList);

View File

@ -1,14 +1,22 @@
package com.hzya.frame.plugin.lets.util;
import cn.hutool.core.lang.Assert;
import com.hzya.frame.plugin.lets.constant.OverallConstant;
import com.hzya.frame.plugin.lets.dao.*;
import com.hzya.frame.plugin.lets.entity.*;
import com.hzya.frame.plugin.lets.resultvo.CacheTocMapVoV2;
import com.hzya.frame.split.SplitListByCountUtil;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.DetailsDto;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto;
import com.hzya.frame.ttxofs.dto.stock.StockinOrderSearchResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 档案类缓存TOC销售订单转换
@ -169,20 +177,45 @@ public class TocReturnBasicArchivesCacheUtil {
* @author liuyang
*/
// public static Map<String, BdCubasdocEntity> stringBdCubasdocEntityHashMap = new HashMap<>();
private Map<String, BdCubasdocEntity> initBdCubasdoc() {
Map<String, BdCubasdocEntity> stringBdCubasdocEntityHashMap = new HashMap<>();
// private Map<String, BdCubasdocEntity> initBdCubasdoc() {
// Map<String, BdCubasdocEntity> stringBdCubasdocEntityHashMap = new HashMap<>();
//
// BdCubasdocEntity bdCubasdocEntity = new BdCubasdocEntity();
// bdCubasdocEntity.setDataSourceCode("lets_u8c");
// bdCubasdocEntity.setDr(0L);
// List<BdCubasdocEntity> bdCumandocEntityList = iBdCubasdocDao.query(bdCubasdocEntity);
// if (bdCumandocEntityList != null && bdCumandocEntityList.size() > 0) {
// for (int i = 0; i < bdCumandocEntityList.size(); i++) {
// BdCubasdocEntity bdCubasdocEntity1 = bdCumandocEntityList.get(i);
// stringBdCubasdocEntityHashMap.put(bdCubasdocEntity1.getCustname(), bdCubasdocEntity1);
// }
// }
// return stringBdCubasdocEntityHashMap;
// }
private Map<String, BdCubasdocEntity> initBdCubasdocV2(List<StockinOrderSearchResponse.StockinOrder.StockinH> headerDtoList) {
Map<String, BdCubasdocEntity> stringBdCubasdocEntityMap = new HashMap<>();
List<BdCubasdocEntity> allBdCumandocEntityList = new ArrayList<>();
if (headerDtoList != null && headerDtoList.size() > 0) {
List<List<StockinOrderSearchResponse.StockinOrder.StockinH>> lists = SplitListByCountUtil.splitListByCount(headerDtoList, 500);
for (int i = 0; i < lists.size(); i++) {
List<StockinOrderSearchResponse.StockinOrder.StockinH> stockinHList = lists.get(i);
String codesStr = stockinHList.stream().map(StockinOrderSearchResponse.StockinOrder.StockinH::getStoreCode).map(id -> "'" + id + "'").collect(Collectors.joining(","));
BdCubasdocEntity bdCubasdocEntity = new BdCubasdocEntity();
bdCubasdocEntity.setDataSourceCode("lets_u8c");
bdCubasdocEntity.setDr(0L);
List<BdCubasdocEntity> bdCumandocEntityList = iBdCubasdocDao.query(bdCubasdocEntity);
if (bdCumandocEntityList != null && bdCumandocEntityList.size() > 0) {
for (int i = 0; i < bdCumandocEntityList.size(); i++) {
BdCubasdocEntity bdCubasdocEntity1 = bdCumandocEntityList.get(i);
stringBdCubasdocEntityHashMap.put(bdCubasdocEntity1.getCustname(), bdCubasdocEntity1);
BdCubasdocEntity bdCubasdocEntity = new BdCubasdocEntity();
bdCubasdocEntity.setDataSourceCode("lets_u8c");
bdCubasdocEntity.setDr(0L);
bdCubasdocEntity.setCustcodes(codesStr);
List<BdCubasdocEntity> bdCumandocEntityList = iBdCubasdocDao.query(bdCubasdocEntity);
allBdCumandocEntityList.addAll(bdCumandocEntityList);
}
}
return stringBdCubasdocEntityHashMap;
if (allBdCumandocEntityList.size() > 0) {
for (int i = 0; i < allBdCumandocEntityList.size(); i++) {
BdCubasdocEntity bdCubasdocEntity = allBdCumandocEntityList.get(i);
stringBdCubasdocEntityMap.put(bdCubasdocEntity.getCustcode(), bdCubasdocEntity);
}
}
return stringBdCubasdocEntityMap;
}
/**
@ -191,17 +224,49 @@ public class TocReturnBasicArchivesCacheUtil {
* @author liuyang
*/
// public static Map<String, BdCumandocEntity> stringBdCumandocEntityMap = new HashMap<>();
private Map<String, BdCumandocEntity> initBdCumandoc() {
Map<String, BdCumandocEntity> stringBdCumandocEntityMap = new HashMap<>();
// private Map<String, BdCumandocEntity> initBdCumandoc() {
// Map<String, BdCumandocEntity> stringBdCumandocEntityMap = new HashMap<>();
//
// BdCumandocEntity bdCumandocEntity1 = new BdCumandocEntity();
// bdCumandocEntity1.setDataSourceCode("lets_u8c");
// bdCumandocEntity1.setDr(0L);
//// bdCumandocEntity1.setCustflags(ProfilesActiveConstant.CUSTOMER);//客商:2客户
// List<BdCumandocEntity> bdCumandocEntityList = iBdCumandocDao.query(bdCumandocEntity1);
// if (bdCumandocEntityList != null && bdCumandocEntityList.size() > 0) {
// for (int i = 0; i < bdCumandocEntityList.size(); i++) {
// BdCumandocEntity bdCumandocEntity = bdCumandocEntityList.get(i);
// stringBdCumandocEntityMap.put(bdCumandocEntity.getPkCubasdoc() + bdCumandocEntity.getPkCorp(), bdCumandocEntity);
// }
// }
// return stringBdCumandocEntityMap;
// }
BdCumandocEntity bdCumandocEntity1 = new BdCumandocEntity();
bdCumandocEntity1.setDataSourceCode("lets_u8c");
bdCumandocEntity1.setDr(0L);
// bdCumandocEntity1.setCustflags(ProfilesActiveConstant.CUSTOMER);//客商:2客户
List<BdCumandocEntity> bdCumandocEntityList = iBdCumandocDao.query(bdCumandocEntity1);
if (bdCumandocEntityList != null && bdCumandocEntityList.size() > 0) {
for (int i = 0; i < bdCumandocEntityList.size(); i++) {
BdCumandocEntity bdCumandocEntity = bdCumandocEntityList.get(i);
/**
* 查询客商管理档案
*
* @author liuyang
*/
private Map<String, BdCumandocEntity> initBdCumandocV2(List<StockinOrderSearchResponse.StockinOrder.StockinH> headerDtoList) throws Exception {
Map<String, BdCumandocEntity> stringBdCumandocEntityMap = new HashMap<>();
List<BdCumandocEntity> allBdCumandocEntityList = new ArrayList<>();
if (headerDtoList != null && headerDtoList.size() > 0) {
List<List<StockinOrderSearchResponse.StockinOrder.StockinH>> lists = SplitListByCountUtil.splitListByCount(headerDtoList, 500);
for (int i = 0; i < lists.size(); i++) {
List<StockinOrderSearchResponse.StockinOrder.StockinH> stockinHList = lists.get(i);
String codesStr = stockinHList.stream().map(StockinOrderSearchResponse.StockinOrder.StockinH::getStoreCode).map(id -> "'" + id + "'").collect(Collectors.joining(","));
BdCumandocEntity bdCumandocEntity = new BdCumandocEntity();
bdCumandocEntity.setDataSourceCode("lets_u8c");
bdCumandocEntity.setDr(0L);
bdCumandocEntity.setCustcodes(codesStr);
List<BdCumandocEntity> bdCumandocEntityList = iBdCumandocDao.query(bdCumandocEntity);
allBdCumandocEntityList.addAll(bdCumandocEntityList);
}
}
if (allBdCumandocEntityList.size() > 0) {
for (int i = 0; i < allBdCumandocEntityList.size(); i++) {
BdCumandocEntity bdCumandocEntity = allBdCumandocEntityList.get(i);
stringBdCumandocEntityMap.put(bdCumandocEntity.getPkCubasdoc() + bdCumandocEntity.getPkCorp(), bdCumandocEntity);
}
}
@ -212,18 +277,42 @@ public class TocReturnBasicArchivesCacheUtil {
* 初始化存货管理档案
*/
// public static Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = new HashMap<>();
private Map<String, BdInvmandocEntity> initInventoryFile() throws Exception {
// private Map<String, BdInvmandocEntity> initInventoryFile() throws Exception {
// Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = new HashMap<>();
//
// BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity();
//// bdInvmandocEntity.setInvcode(copyRowDetailsListVo.getSpec_no());
//// bdInvmandocEntity.setPkCorp(shippingCompanyBdCorpEntity.getPkCorp());
// List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.queryBdInvmandocByInvcodeList(bdInvmandocEntity);
// if (bdInvmandocEntity2 != null && bdInvmandocEntity2.size() > 0) {
// for (int i = 0; i < bdInvmandocEntity2.size(); i++) {
// BdInvmandocEntity bdInvmandocEntity1 = bdInvmandocEntity2.get(i);
// //2024年8月6日 14:27:45 通过存货编码+公司缓存
// stringBdInvmandocEntityMap.put(bdInvmandocEntity1.getInvcode() + bdInvmandocEntity1.getPkCorp(), bdInvmandocEntity1);
// }
// }
// return stringBdInvmandocEntityMap;
// }
public Map<String, BdInvmandocEntity> initInventoryFileV2(List<StockinOrderSearchResponse.StockinOrder.StockinB> detailsDtos) throws Exception {
List<BdInvmandocEntity> allBdInvmandocEntity = new ArrayList<>();
Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = new HashMap<>();
BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity();
// bdInvmandocEntity.setInvcode(copyRowDetailsListVo.getSpec_no());
// bdInvmandocEntity.setPkCorp(shippingCompanyBdCorpEntity.getPkCorp());
List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.queryBdInvmandocByInvcodeList(bdInvmandocEntity);
if (bdInvmandocEntity2 != null && bdInvmandocEntity2.size() > 0) {
for (int i = 0; i < bdInvmandocEntity2.size(); i++) {
BdInvmandocEntity bdInvmandocEntity1 = bdInvmandocEntity2.get(i);
//2024年8月6日 14:27:45 通过存货编码+公司缓存
stringBdInvmandocEntityMap.put(bdInvmandocEntity1.getInvcode() + bdInvmandocEntity1.getPkCorp(), bdInvmandocEntity1);
if (detailsDtos != null && detailsDtos.size() > 0) {
List<List<StockinOrderSearchResponse.StockinOrder.StockinB>> lists = SplitListByCountUtil.splitListByCount(detailsDtos, 500);
for (int i = 0; i < lists.size(); i++) {
List<StockinOrderSearchResponse.StockinOrder.StockinB> stockinBList = lists.get(i);
String idsStr = stockinBList.stream().map(StockinOrderSearchResponse.StockinOrder.StockinB::getSkuCode).map(id -> "'" + id + "'").collect(Collectors.joining(","));
BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity();
bdInvmandocEntity.setInvcodes(idsStr);
List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.queryBdInvmandocByInvcodeList(bdInvmandocEntity);
allBdInvmandocEntity.addAll(bdInvmandocEntity2);
}
}
if (allBdInvmandocEntity.size() > 0) {
for (int i = 0; i < allBdInvmandocEntity.size(); i++) {
BdInvmandocEntity bdInvmandocEntity = allBdInvmandocEntity.get(i);
stringBdInvmandocEntityMap.put(bdInvmandocEntity.getInvcode() + bdInvmandocEntity.getPkCorp(), bdInvmandocEntity);
}
}
return stringBdInvmandocEntityMap;
@ -234,20 +323,47 @@ public class TocReturnBasicArchivesCacheUtil {
* 2024年8月7日 10:57:55
*/
// public static Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityHashMap = new HashMap<>();
private Map<String, BdInvbasdocEntity> initBasicInventoryFile() throws Exception {
Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityHashMap = new HashMap<>();
// private Map<String, BdInvbasdocEntity> initBasicInventoryFile() throws Exception {
// Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityHashMap = new HashMap<>();
//
// BdInvbasdocEntity bdInvbasdocEntity = new BdInvbasdocEntity();
//// bdInvbasdocEntity.setPk_invmandoc(bdInvmandocEntity1.getPkInvmandoc());
//// bdInvbasdocEntity.setPk_corp(shippingCompanyBdCorpEntity.getPkCorp());
// List<BdInvbasdocEntity> bdInvbasdocEntity2 = iBdInvbasdocDao.queryBdInvbasdocByPkInvmandocV2(bdInvbasdocEntity);
// if (bdInvbasdocEntity2 != null && bdInvbasdocEntity2.size() > 0) {
// for (int i = 0; i < bdInvbasdocEntity2.size(); i++) {
// BdInvbasdocEntity bdInvbasdocEntity1 = bdInvbasdocEntity2.get(i);
// stringBdInvbasdocEntityHashMap.put(bdInvbasdocEntity1.getPk_invmandoc() + bdInvbasdocEntity1.getPk_corp_man(), bdInvbasdocEntity1);
// }
// }
// return stringBdInvbasdocEntityHashMap;
// }
BdInvbasdocEntity bdInvbasdocEntity = new BdInvbasdocEntity();
// bdInvbasdocEntity.setPk_invmandoc(bdInvmandocEntity1.getPkInvmandoc());
// bdInvbasdocEntity.setPk_corp(shippingCompanyBdCorpEntity.getPkCorp());
List<BdInvbasdocEntity> bdInvbasdocEntity2 = iBdInvbasdocDao.queryBdInvbasdocByPkInvmandocV2(bdInvbasdocEntity);
if (bdInvbasdocEntity2 != null && bdInvbasdocEntity2.size() > 0) {
for (int i = 0; i < bdInvbasdocEntity2.size(); i++) {
BdInvbasdocEntity bdInvbasdocEntity1 = bdInvbasdocEntity2.get(i);
stringBdInvbasdocEntityHashMap.put(bdInvbasdocEntity1.getPk_invmandoc() + bdInvbasdocEntity1.getPk_corp_man(), bdInvbasdocEntity1);
/**
* 根据O存货商家编码初始化存货基本档案
*
* @author liuyang
*/
private Map<String, BdInvbasdocEntity> initBasicInventoryFileV2(List<StockinOrderSearchResponse.StockinOrder.StockinB> detailsDtoList) throws Exception {
List<BdInvbasdocEntity> allBdInvbasdocEntityList = new ArrayList<>();
if (detailsDtoList != null && detailsDtoList.size() > 0) {
List<List<StockinOrderSearchResponse.StockinOrder.StockinB>> lists = SplitListByCountUtil.splitListByCount(detailsDtoList, 500);
for (int i = 0; i < lists.size(); i++) {
List<StockinOrderSearchResponse.StockinOrder.StockinB> stockinBList = lists.get(i);
String idsStr = stockinBList.stream().map(StockinOrderSearchResponse.StockinOrder.StockinB::getSkuCode).map(id -> "'" + id + "'").collect(Collectors.joining(","));
BdInvbasdocEntity bdInvbasdocEntity = new BdInvbasdocEntity();
bdInvbasdocEntity.setInvcodes(idsStr);
List<BdInvbasdocEntity> bdInvbasdocEntities = iBdInvbasdocDao.queryBdInvbasdocByPkInvmandocV3(bdInvbasdocEntity);
allBdInvbasdocEntityList.addAll(bdInvbasdocEntities);
}
}
return stringBdInvbasdocEntityHashMap;
Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityMap = new HashMap<>();
for (int i = 0; i < allBdInvbasdocEntityList.size(); i++) {
BdInvbasdocEntity bdInvbasdocEntity = allBdInvbasdocEntityList.get(i);
stringBdInvbasdocEntityMap.put(bdInvbasdocEntity.getInvcode(), bdInvbasdocEntity);
}
return stringBdInvbasdocEntityMap;
}
/**
@ -257,18 +373,41 @@ public class TocReturnBasicArchivesCacheUtil {
* @author liuyang
*/
// public static Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityHashMap = new HashMap<>();
private Map<String, BdTaxitemsEntity> initBdTaxitemsEntity() throws Exception {
Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityHashMap = new HashMap<>();
// private Map<String, BdTaxitemsEntity> initBdTaxitemsEntity() throws Exception {
// Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityHashMap = new HashMap<>();
//
// BdTaxitemsEntity bdTaxitemsEntity = new BdTaxitemsEntity();
// List<BdTaxitemsEntity> bdTaxitemsEntityList = iBdTaxitemsDao.queryBdInvbasdocByInvcodeV2(bdTaxitemsEntity);
// if (bdTaxitemsEntityList != null && bdTaxitemsEntityList.size() > 0) {
// for (int i = 0; i < bdTaxitemsEntityList.size(); i++) {
// BdTaxitemsEntity bdTaxitemsEntity1 = bdTaxitemsEntityList.get(i);
// stringBdTaxitemsEntityHashMap.put(bdTaxitemsEntity1.getInvcode(), bdTaxitemsEntity1);
// }
// }
// return stringBdTaxitemsEntityHashMap;
// }
private Map<String, BdTaxitemsEntity> initBdTaxitemsEntityV2(List<StockinOrderSearchResponse.StockinOrder.StockinB> detailsDtos) throws Exception {
List<BdTaxitemsEntity> allBdTaxitemsEntityList = new ArrayList<>();
Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityMap = new HashMap<>();
if (detailsDtos != null && detailsDtos.size() > 0) {
List<List<StockinOrderSearchResponse.StockinOrder.StockinB>> lists = SplitListByCountUtil.splitListByCount(detailsDtos, 500);
for (int i = 0; i < lists.size(); i++) {
List<StockinOrderSearchResponse.StockinOrder.StockinB> stockinBList = lists.get(i);
String codesStr = stockinBList.stream().map(StockinOrderSearchResponse.StockinOrder.StockinB::getSkuCode).map(id -> "'" + id + "'").collect(Collectors.joining(","));
BdTaxitemsEntity bdTaxitemsEntity = new BdTaxitemsEntity();
List<BdTaxitemsEntity> bdTaxitemsEntityList = iBdTaxitemsDao.queryBdInvbasdocByInvcodeV2(bdTaxitemsEntity);
if (bdTaxitemsEntityList != null && bdTaxitemsEntityList.size() > 0) {
for (int i = 0; i < bdTaxitemsEntityList.size(); i++) {
BdTaxitemsEntity bdTaxitemsEntity1 = bdTaxitemsEntityList.get(i);
stringBdTaxitemsEntityHashMap.put(bdTaxitemsEntity1.getInvcode(), bdTaxitemsEntity1);
BdTaxitemsEntity bdTaxitemsEntity = new BdTaxitemsEntity();
bdTaxitemsEntity.setInvcodes(codesStr);
List<BdTaxitemsEntity> bdTaxitemsEntityList = iBdTaxitemsDao.queryBdInvbasdocByInvcodeV2(bdTaxitemsEntity);
allBdTaxitemsEntityList.addAll(bdTaxitemsEntityList);
}
}
return stringBdTaxitemsEntityHashMap;
if (allBdTaxitemsEntityList.size() > 0) {
for (int i = 0; i < allBdTaxitemsEntityList.size(); i++) {
BdTaxitemsEntity bdTaxitemsEntity = allBdTaxitemsEntityList.get(i);
stringBdTaxitemsEntityMap.put(bdTaxitemsEntity.getInvcode(), bdTaxitemsEntity);
}
}
return stringBdTaxitemsEntityMap;
}
/**
@ -280,8 +419,10 @@ public class TocReturnBasicArchivesCacheUtil {
private Map<String, BdDefdocEntity> initSourcePlatform() {
Map<String, BdDefdocEntity> stringBdDefdocEntityHashMap = new HashMap<>();
String platformZdyId2 = OverallConstant.getOverAllValue("u8c自定义项档案-平台主键");
BdDefdocEntity bdDefdocEntity = new BdDefdocEntity();
bdDefdocEntity.setPkDefdoclist("0001A210000000000JUD");
// bdDefdocEntity.setPkDefdoclist("0001A210000000000JUD");
bdDefdocEntity.setPkDefdoclist(platformZdyId2);
bdDefdocEntity.setDr(0);
bdDefdocEntity.setDataSourceCode("lets_u8c");
List<BdDefdocEntity> bdDefdocEntityList = iBdDefdocDao.query(bdDefdocEntity);
@ -301,8 +442,10 @@ public class TocReturnBasicArchivesCacheUtil {
private Map<String, BdDefdocEntity> initShopDiy() {
Map<String, BdDefdocEntity> shopDefdocEntityHashMap = new HashMap<>();
String platformZdyId2 = OverallConstant.getOverAllValue("u8c自定义项档案-店铺主键");
BdDefdocEntity bdDefdocEntity = new BdDefdocEntity();
bdDefdocEntity.setPkDefdoclist("0001A210000000000XZX");
// bdDefdocEntity.setPkDefdoclist("0001A210000000000XZX");
bdDefdocEntity.setPkDefdoclist(platformZdyId2);
bdDefdocEntity.setDr(0);
bdDefdocEntity.setDataSourceCode("lets_u8c");
List<BdDefdocEntity> bdDefdocEntityList = iBdDefdocDao.query(bdDefdocEntity);
@ -360,20 +503,26 @@ public class TocReturnBasicArchivesCacheUtil {
/**
* 初始化缓存
*
* @param returnGoodHeaderDetailsDataDtoList OFS售后入库单
* @author liuyang
*/
public CacheTocMapVoV2 initCache() throws Exception {
public CacheTocMapVoV2 initCache(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList) throws Exception {
Assert.notNull(returnGoodHeaderDetailsDataDtoList, "returnGoodHeaderDetailsDataDtoList不能为空");
List<StockinOrderSearchResponse.StockinOrder.StockinB> stockinBList = initOfsDetailsDto(returnGoodHeaderDetailsDataDtoList);
List<StockinOrderSearchResponse.StockinOrder.StockinH> stockinHList = initOFsHeadDto(returnGoodHeaderDetailsDataDtoList);
// clearCache();
Map<String, BdCorpEntity> stringBdCorpEntityMap = initShop();
Map<String, BdStordocEntity> stringBdStordocEntityMap = initBdStordoc();
Map<String, BdCalbodyEntity> stringBdCalbodyEntityMap = initBdCalbody();
Map<String, BdSalestruEntity> stringBdSalestruEntityMap = initBdSalestru();
Map<String, BdDeptdocEntity> stringBdDeptdocEntityMap = initDept();
Map<String, BdCubasdocEntity> stringBdCubasdocEntityMap = initBdCubasdoc();
Map<String, BdCumandocEntity> stringBdCumandocEntityMap = initBdCumandoc();
Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = initInventoryFile();
Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityMap = initBasicInventoryFile();
Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityMap = initBdTaxitemsEntity();
Map<String, BdCubasdocEntity> stringBdCubasdocEntityMap = initBdCubasdocV2(stockinHList);
Map<String, BdCumandocEntity> stringBdCumandocEntityMap = initBdCumandocV2(stockinHList);
Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = initInventoryFileV2(stockinBList);
Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityMap = initBasicInventoryFileV2(stockinBList);
Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityMap = initBdTaxitemsEntityV2(stockinBList);
Map<String, BdDefdocEntity> stringBdDefdocEntityMap = initSourcePlatform();
Map<String, BdDefdocEntity> stringBdDefdocEntityMap1 = initShopDiy();
Map<String, BdRdclEntity> stringBdRdclEntityMap = initBdRdcl();
@ -394,4 +543,44 @@ public class TocReturnBasicArchivesCacheUtil {
cacheTocMapVoV2.setStringBdRdclEntityMap(stringBdRdclEntityMap);
return cacheTocMapVoV2;
}
/**
* 整理出明细集合
*
* @author liuyang
*/
private List<StockinOrderSearchResponse.StockinOrder.StockinB> initOfsDetailsDto(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoLis) {
List<StockinOrderSearchResponse.StockinOrder.StockinB> stockinBList = new ArrayList<>();
if (returnGoodHeaderDetailsDataDtoLis != null && returnGoodHeaderDetailsDataDtoLis.size() > 0) {
for (int i = 0; i < returnGoodHeaderDetailsDataDtoLis.size(); i++) {
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoLis.get(i);
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
stockinBList.addAll(details);
}
}
return stockinBList;
}
/**
* 整理出表头集合
*
* @author liuyang
*/
private List<StockinOrderSearchResponse.StockinOrder.StockinH> initOFsHeadDto(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoLis) throws Exception {
List<StockinOrderSearchResponse.StockinOrder.StockinH> stockinHList = new ArrayList<>();
if (returnGoodHeaderDetailsDataDtoLis != null && returnGoodHeaderDetailsDataDtoLis.size() > 0) {
for (int i = 0; i < returnGoodHeaderDetailsDataDtoLis.size(); i++) {
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoLis.get(i);
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
stockinHList.add(header);
}
}
return stockinHList;
}
}

View File

@ -26,8 +26,8 @@ public class SoSaleReturnPluginInitializerToCTest {
public void startImplement() {
// soSaleReturnPluginInitializerToC.startImplement(null, null);
try {
String code = "LETS-RE2022080200000036";
soSaleReturnPluginInitializerToC.startImplementByCode(code, null);
String code = "LETS-RE2024091400000001";
soSaleReturnPluginInitializerToC.startImplementByCode(code, "tran");
} catch (Exception e) {
e.printStackTrace();
}