数据库查询和缓存初始化优化- 修正了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_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="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> </trim>
<if test=" sort == ''.toString() "> order by sorts asc</if> <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> <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} and bd_invbasdoc.invcode = #{invcode}
</if> </if>
<if test="invcodes!=null and invcodes!=''"> <if test="invcodes!=null and invcodes!=''">
and bd_invbasdoc.invcode in ${invcodes} and bd_invbasdoc.invcode in (${invcodes})
</if> </if>
</select> </select>

View File

@ -882,7 +882,7 @@
insert into tocofs_returngoods_detailed(id,newPushDate3,newTransmitInfo3,newState3,newSystemNumber3,newSystemPrimary3) insert into tocofs_returngoods_detailed(id,newPushDate3,newTransmitInfo3,newState3,newSystemNumber3,newSystemPrimary3)
values values
<foreach collection="list" item="entity" separator=","> <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> </foreach>
on duplicate key update on duplicate key update
id = values(id), id = values(id),

View File

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

View File

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

View File

@ -1,14 +1,22 @@
package com.hzya.frame.plugin.lets.util; 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.dao.*;
import com.hzya.frame.plugin.lets.entity.*; import com.hzya.frame.plugin.lets.entity.*;
import com.hzya.frame.plugin.lets.resultvo.CacheTocMapVoV2; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 档案类缓存TOC销售订单转换 * 档案类缓存TOC销售订单转换
@ -169,20 +177,45 @@ public class TocReturnBasicArchivesCacheUtil {
* @author liuyang * @author liuyang
*/ */
// public static Map<String, BdCubasdocEntity> stringBdCubasdocEntityHashMap = new HashMap<>(); // public static Map<String, BdCubasdocEntity> stringBdCubasdocEntityHashMap = new HashMap<>();
private Map<String, BdCubasdocEntity> initBdCubasdoc() { // private Map<String, BdCubasdocEntity> initBdCubasdoc() {
Map<String, BdCubasdocEntity> stringBdCubasdocEntityHashMap = new HashMap<>(); // 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 bdCubasdocEntity = new BdCubasdocEntity();
bdCubasdocEntity.setDataSourceCode("lets_u8c"); bdCubasdocEntity.setDataSourceCode("lets_u8c");
bdCubasdocEntity.setDr(0L); bdCubasdocEntity.setDr(0L);
List<BdCubasdocEntity> bdCumandocEntityList = iBdCubasdocDao.query(bdCubasdocEntity); bdCubasdocEntity.setCustcodes(codesStr);
if (bdCumandocEntityList != null && bdCumandocEntityList.size() > 0) { List<BdCubasdocEntity> bdCumandocEntityList = iBdCubasdocDao.query(bdCubasdocEntity);
for (int i = 0; i < bdCumandocEntityList.size(); i++) { allBdCumandocEntityList.addAll(bdCumandocEntityList);
BdCubasdocEntity bdCubasdocEntity1 = bdCumandocEntityList.get(i);
stringBdCubasdocEntityHashMap.put(bdCubasdocEntity1.getCustname(), bdCubasdocEntity1);
} }
} }
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 * @author liuyang
*/ */
// public static Map<String, BdCumandocEntity> stringBdCumandocEntityMap = new HashMap<>(); // public static Map<String, BdCumandocEntity> stringBdCumandocEntityMap = new HashMap<>();
private Map<String, BdCumandocEntity> initBdCumandoc() { // private Map<String, BdCumandocEntity> initBdCumandoc() {
Map<String, BdCumandocEntity> stringBdCumandocEntityMap = new HashMap<>(); // 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客户 * @author liuyang
List<BdCumandocEntity> bdCumandocEntityList = iBdCumandocDao.query(bdCumandocEntity1); */
if (bdCumandocEntityList != null && bdCumandocEntityList.size() > 0) { private Map<String, BdCumandocEntity> initBdCumandocV2(List<StockinOrderSearchResponse.StockinOrder.StockinH> headerDtoList) throws Exception {
for (int i = 0; i < bdCumandocEntityList.size(); i++) { Map<String, BdCumandocEntity> stringBdCumandocEntityMap = new HashMap<>();
BdCumandocEntity bdCumandocEntity = bdCumandocEntityList.get(i); 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); stringBdCumandocEntityMap.put(bdCumandocEntity.getPkCubasdoc() + bdCumandocEntity.getPkCorp(), bdCumandocEntity);
} }
} }
@ -212,18 +277,42 @@ public class TocReturnBasicArchivesCacheUtil {
* 初始化存货管理档案 * 初始化存货管理档案
*/ */
// public static Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = new HashMap<>(); // 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<>(); Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = new HashMap<>();
BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity(); if (detailsDtos != null && detailsDtos.size() > 0) {
// bdInvmandocEntity.setInvcode(copyRowDetailsListVo.getSpec_no()); List<List<StockinOrderSearchResponse.StockinOrder.StockinB>> lists = SplitListByCountUtil.splitListByCount(detailsDtos, 500);
// bdInvmandocEntity.setPkCorp(shippingCompanyBdCorpEntity.getPkCorp()); for (int i = 0; i < lists.size(); i++) {
List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.queryBdInvmandocByInvcodeList(bdInvmandocEntity); List<StockinOrderSearchResponse.StockinOrder.StockinB> stockinBList = lists.get(i);
if (bdInvmandocEntity2 != null && bdInvmandocEntity2.size() > 0) { String idsStr = stockinBList.stream().map(StockinOrderSearchResponse.StockinOrder.StockinB::getSkuCode).map(id -> "'" + id + "'").collect(Collectors.joining(","));
for (int i = 0; i < bdInvmandocEntity2.size(); i++) {
BdInvmandocEntity bdInvmandocEntity1 = bdInvmandocEntity2.get(i); BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity();
//2024年8月6日 14:27:45 通过存货编码+公司缓存 bdInvmandocEntity.setInvcodes(idsStr);
stringBdInvmandocEntityMap.put(bdInvmandocEntity1.getInvcode() + bdInvmandocEntity1.getPkCorp(), bdInvmandocEntity1); 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; return stringBdInvmandocEntityMap;
@ -234,20 +323,47 @@ public class TocReturnBasicArchivesCacheUtil {
* 2024年8月7日 10:57:55 * 2024年8月7日 10:57:55
*/ */
// public static Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityHashMap = new HashMap<>(); // public static Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityHashMap = new HashMap<>();
private Map<String, BdInvbasdocEntity> initBasicInventoryFile() throws Exception { // private Map<String, BdInvbasdocEntity> initBasicInventoryFile() throws Exception {
Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityHashMap = new HashMap<>(); // 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()); * 根据O存货商家编码初始化存货基本档案
// bdInvbasdocEntity.setPk_corp(shippingCompanyBdCorpEntity.getPkCorp()); *
List<BdInvbasdocEntity> bdInvbasdocEntity2 = iBdInvbasdocDao.queryBdInvbasdocByPkInvmandocV2(bdInvbasdocEntity); * @author liuyang
if (bdInvbasdocEntity2 != null && bdInvbasdocEntity2.size() > 0) { */
for (int i = 0; i < bdInvbasdocEntity2.size(); i++) { private Map<String, BdInvbasdocEntity> initBasicInventoryFileV2(List<StockinOrderSearchResponse.StockinOrder.StockinB> detailsDtoList) throws Exception {
BdInvbasdocEntity bdInvbasdocEntity1 = bdInvbasdocEntity2.get(i); List<BdInvbasdocEntity> allBdInvbasdocEntityList = new ArrayList<>();
stringBdInvbasdocEntityHashMap.put(bdInvbasdocEntity1.getPk_invmandoc() + bdInvbasdocEntity1.getPk_corp_man(), bdInvbasdocEntity1); 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 * @author liuyang
*/ */
// public static Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityHashMap = new HashMap<>(); // public static Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityHashMap = new HashMap<>();
private Map<String, BdTaxitemsEntity> initBdTaxitemsEntity() throws Exception { // private Map<String, BdTaxitemsEntity> initBdTaxitemsEntity() throws Exception {
Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityHashMap = new HashMap<>(); // 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(); BdTaxitemsEntity bdTaxitemsEntity = new BdTaxitemsEntity();
List<BdTaxitemsEntity> bdTaxitemsEntityList = iBdTaxitemsDao.queryBdInvbasdocByInvcodeV2(bdTaxitemsEntity); bdTaxitemsEntity.setInvcodes(codesStr);
if (bdTaxitemsEntityList != null && bdTaxitemsEntityList.size() > 0) { List<BdTaxitemsEntity> bdTaxitemsEntityList = iBdTaxitemsDao.queryBdInvbasdocByInvcodeV2(bdTaxitemsEntity);
for (int i = 0; i < bdTaxitemsEntityList.size(); i++) { allBdTaxitemsEntityList.addAll(bdTaxitemsEntityList);
BdTaxitemsEntity bdTaxitemsEntity1 = bdTaxitemsEntityList.get(i);
stringBdTaxitemsEntityHashMap.put(bdTaxitemsEntity1.getInvcode(), bdTaxitemsEntity1);
} }
} }
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() { private Map<String, BdDefdocEntity> initSourcePlatform() {
Map<String, BdDefdocEntity> stringBdDefdocEntityHashMap = new HashMap<>(); Map<String, BdDefdocEntity> stringBdDefdocEntityHashMap = new HashMap<>();
String platformZdyId2 = OverallConstant.getOverAllValue("u8c自定义项档案-平台主键");
BdDefdocEntity bdDefdocEntity = new BdDefdocEntity(); BdDefdocEntity bdDefdocEntity = new BdDefdocEntity();
bdDefdocEntity.setPkDefdoclist("0001A210000000000JUD"); // bdDefdocEntity.setPkDefdoclist("0001A210000000000JUD");
bdDefdocEntity.setPkDefdoclist(platformZdyId2);
bdDefdocEntity.setDr(0); bdDefdocEntity.setDr(0);
bdDefdocEntity.setDataSourceCode("lets_u8c"); bdDefdocEntity.setDataSourceCode("lets_u8c");
List<BdDefdocEntity> bdDefdocEntityList = iBdDefdocDao.query(bdDefdocEntity); List<BdDefdocEntity> bdDefdocEntityList = iBdDefdocDao.query(bdDefdocEntity);
@ -301,8 +442,10 @@ public class TocReturnBasicArchivesCacheUtil {
private Map<String, BdDefdocEntity> initShopDiy() { private Map<String, BdDefdocEntity> initShopDiy() {
Map<String, BdDefdocEntity> shopDefdocEntityHashMap = new HashMap<>(); Map<String, BdDefdocEntity> shopDefdocEntityHashMap = new HashMap<>();
String platformZdyId2 = OverallConstant.getOverAllValue("u8c自定义项档案-店铺主键");
BdDefdocEntity bdDefdocEntity = new BdDefdocEntity(); BdDefdocEntity bdDefdocEntity = new BdDefdocEntity();
bdDefdocEntity.setPkDefdoclist("0001A210000000000XZX"); // bdDefdocEntity.setPkDefdoclist("0001A210000000000XZX");
bdDefdocEntity.setPkDefdoclist(platformZdyId2);
bdDefdocEntity.setDr(0); bdDefdocEntity.setDr(0);
bdDefdocEntity.setDataSourceCode("lets_u8c"); bdDefdocEntity.setDataSourceCode("lets_u8c");
List<BdDefdocEntity> bdDefdocEntityList = iBdDefdocDao.query(bdDefdocEntity); List<BdDefdocEntity> bdDefdocEntityList = iBdDefdocDao.query(bdDefdocEntity);
@ -360,20 +503,26 @@ public class TocReturnBasicArchivesCacheUtil {
/** /**
* 初始化缓存 * 初始化缓存
* *
* @param returnGoodHeaderDetailsDataDtoList OFS售后入库单
* @author liuyang * @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(); // clearCache();
Map<String, BdCorpEntity> stringBdCorpEntityMap = initShop(); Map<String, BdCorpEntity> stringBdCorpEntityMap = initShop();
Map<String, BdStordocEntity> stringBdStordocEntityMap = initBdStordoc(); Map<String, BdStordocEntity> stringBdStordocEntityMap = initBdStordoc();
Map<String, BdCalbodyEntity> stringBdCalbodyEntityMap = initBdCalbody(); Map<String, BdCalbodyEntity> stringBdCalbodyEntityMap = initBdCalbody();
Map<String, BdSalestruEntity> stringBdSalestruEntityMap = initBdSalestru(); Map<String, BdSalestruEntity> stringBdSalestruEntityMap = initBdSalestru();
Map<String, BdDeptdocEntity> stringBdDeptdocEntityMap = initDept(); Map<String, BdDeptdocEntity> stringBdDeptdocEntityMap = initDept();
Map<String, BdCubasdocEntity> stringBdCubasdocEntityMap = initBdCubasdoc(); Map<String, BdCubasdocEntity> stringBdCubasdocEntityMap = initBdCubasdocV2(stockinHList);
Map<String, BdCumandocEntity> stringBdCumandocEntityMap = initBdCumandoc(); Map<String, BdCumandocEntity> stringBdCumandocEntityMap = initBdCumandocV2(stockinHList);
Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = initInventoryFile(); Map<String, BdInvmandocEntity> stringBdInvmandocEntityMap = initInventoryFileV2(stockinBList);
Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityMap = initBasicInventoryFile(); Map<String, BdInvbasdocEntity> stringBdInvbasdocEntityMap = initBasicInventoryFileV2(stockinBList);
Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityMap = initBdTaxitemsEntity(); Map<String, BdTaxitemsEntity> stringBdTaxitemsEntityMap = initBdTaxitemsEntityV2(stockinBList);
Map<String, BdDefdocEntity> stringBdDefdocEntityMap = initSourcePlatform(); Map<String, BdDefdocEntity> stringBdDefdocEntityMap = initSourcePlatform();
Map<String, BdDefdocEntity> stringBdDefdocEntityMap1 = initShopDiy(); Map<String, BdDefdocEntity> stringBdDefdocEntityMap1 = initShopDiy();
Map<String, BdRdclEntity> stringBdRdclEntityMap = initBdRdcl(); Map<String, BdRdclEntity> stringBdRdclEntityMap = initBdRdcl();
@ -394,4 +543,44 @@ public class TocReturnBasicArchivesCacheUtil {
cacheTocMapVoV2.setStringBdRdclEntityMap(stringBdRdclEntityMap); cacheTocMapVoV2.setStringBdRdclEntityMap(stringBdRdclEntityMap);
return cacheTocMapVoV2; 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() { public void startImplement() {
// soSaleReturnPluginInitializerToC.startImplement(null, null); // soSaleReturnPluginInitializerToC.startImplement(null, null);
try { try {
String code = "LETS-RE2022080200000036"; String code = "LETS-RE2024091400000001";
soSaleReturnPluginInitializerToC.startImplementByCode(code, null); soSaleReturnPluginInitializerToC.startImplementByCode(code, "tran");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }