feat(buildpackage): 添加 BOM版本并优化退货汇总逻辑- 在 ConsignmachiningInBodyDto 中添加 BOM 版本字段
- 与妮姐确认后设置核销方式为"按 BOM 核销" -优化 groupSummary 方法,支持按指定维度汇总 - 移除不必要的键值对,提高数据处理效率 - 更新测试用例以适应新的业务逻辑
This commit is contained in:
parent
215997007a
commit
748b12b405
|
@ -467,8 +467,12 @@ public class ConsignmachiningInReturn extends PluginBaseEntity {
|
|||
consignmachiningInBodyDto.setVsourcerowno(u8cPoOrderDetail.getCrowno());//来源单据行号
|
||||
// consignmachiningInBodyDto.setVsourcebillcode(scOrderEntity.getVordercode());//来源单据号
|
||||
// consignmachiningInBodyDto.setWriteofftype("按备料发料核销");//核销方式,和妮姐已经确认,不用传递
|
||||
//2025年2月13日 17:36:28 和妮姐电话确认,核销方式永远为按BOM核销,问了2遍
|
||||
consignmachiningInBodyDto.setWriteofftype("按BOM核销");//核销方式,和妮姐已经确认,不用传递
|
||||
consignmachiningInBodyDto.setDbizdate(generateBusinessDate);// 入库日期
|
||||
// consignmachiningInBodyDto.setVdef16(bomVersion.get(0).getVersion());//BOM version
|
||||
//2025年2月13日 17:35:45 和妮姐电话确认,bom版本永远为1.0,问了3遍
|
||||
consignmachiningInBodyDto.setBomversion("1.0");//BOM version
|
||||
consignmachiningInBodyDto.setCsourcebillbid(u8cPoOrderDetail.getCorderBid());//来源明细主键
|
||||
consignmachiningInBodyDto.setCsourcebillhid(scOrderEntity.getCorderid());//来源表头主键
|
||||
consignmachiningInBodyDtoArrayList.add(consignmachiningInBodyDto);
|
||||
|
|
|
@ -704,7 +704,9 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
String sceneType = "stock";
|
||||
List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType);
|
||||
// 分组汇总
|
||||
Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos);
|
||||
String dimension = null;
|
||||
// dimension = "1001&dy-intoyou&B2CHA20240033&6973391733588&SALES&002";
|
||||
Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension);
|
||||
// 查询U8C业务流程
|
||||
BdBusitypeEntity bdBusitypeEntity = u8cOperationFlow();
|
||||
// 查询销售收发类别
|
||||
|
@ -989,7 +991,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
String sceneType = "tran";
|
||||
List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType);
|
||||
// 分组汇总
|
||||
Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos);
|
||||
String dimension = null;
|
||||
Map<String, List<GoodsRertunSonDetailsDto>> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension);
|
||||
// 查询U8C业务流程
|
||||
BdBusitypeEntity bdBusitypeEntity = u8cOperationFlowV2();
|
||||
//初始化所有存货管理档案对应的结存价+采购价
|
||||
|
@ -1608,7 +1611,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
*
|
||||
* @author liuyang
|
||||
*/
|
||||
private Map<String, List<GoodsRertunSonDetailsDto>> groupSummary(List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos) {
|
||||
private Map<String, List<GoodsRertunSonDetailsDto>> groupSummary(List<GoodsRertunSonDetailsDto> goodsRertunSonDetailsDtos, String dimension) {
|
||||
if (goodsRertunSonDetailsDtos != null && goodsRertunSonDetailsDtos.size() > 0) {
|
||||
for (int i = 0; i < goodsRertunSonDetailsDtos.size(); i++) {
|
||||
GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = goodsRertunSonDetailsDtos.get(i);
|
||||
|
@ -1683,12 +1686,43 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
goodsRertunSonDetailsDto.setSummaryDimensionStr(summaryDimensionStr.toString());
|
||||
}
|
||||
logger.info("TOC:{} 个出库单对象需要汇总", goodsRertunSonDetailsDtos.size());
|
||||
return goodsRertunSonDetailsDtos.stream().collect(Collectors.groupingBy(GoodsRertunSonDetailsDto::getSummaryDimensionStr));
|
||||
if (dimension == null) {
|
||||
return goodsRertunSonDetailsDtos.stream().collect(Collectors.groupingBy(GoodsRertunSonDetailsDto::getSummaryDimensionStr));
|
||||
} else {
|
||||
Map<String, List<GoodsRertunSonDetailsDto>> collect = goodsRertunSonDetailsDtos.stream().collect(Collectors.groupingBy(GoodsRertunSonDetailsDto::getSummaryDimensionStr));
|
||||
keepOnlyNeededKeys(collect, dimension);
|
||||
return collect;
|
||||
}
|
||||
}
|
||||
logger.info("TOC:0个对象需要汇总");
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除不需要的键
|
||||
*
|
||||
* @author liuyang
|
||||
*/
|
||||
private static void keepOnlyNeededKeys(Map<String, List<GoodsRertunSonDetailsDto>> map, String... neededKeys) {
|
||||
Iterator<Map.Entry<String, List<GoodsRertunSonDetailsDto>>> iterator = map.entrySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<String, List<GoodsRertunSonDetailsDto>> entry = iterator.next();
|
||||
// 如果不是需要的键,则移除
|
||||
if (!contains(neededKeys, entry.getKey())) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean contains(String[] array, String targetValue) {
|
||||
for (String value : array) {
|
||||
if (value.equals(targetValue)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 2024年8月6日 10:59:03 查询U8C业务流程
|
||||
*
|
||||
|
|
|
@ -19,6 +19,7 @@ public class ConsignmachiningInBodyDto {
|
|||
private String vsourcerowno;
|
||||
private String vsourcebillcode;
|
||||
private String writeofftype;//核销方式
|
||||
private String bomversion;//BOM版本
|
||||
private String dbizdate;
|
||||
private String vdef16;
|
||||
private String csourcebillbid;//来源明细主键
|
||||
|
|
|
@ -50,7 +50,7 @@ public class SoSaleReturnPluginInitializerToCTest {
|
|||
|
||||
// soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025010900002384", "tran");
|
||||
|
||||
// soSaleReturnPluginInitializerToC.startImplementStockByTime("2024-12-24 16:02:17", "2024-12-24 16:02:17", "0");
|
||||
soSaleReturnPluginInitializerToC.startImplementStockByTime("2025-01-31 00:00:00", "2025-01-31 23:59:59", "1");
|
||||
|
||||
// JSONObject jsonObject = new JSONObject();
|
||||
// soSaleReturnPluginInitializerToC.executeBusiness(jsonObject);
|
||||
|
@ -82,7 +82,7 @@ public class SoSaleReturnPluginInitializerToCTest {
|
|||
// BdBusitypeEntity bdBusitypeEntity3 = queryBdBusitypeUtil.queryBdBusitype("TOC确认收入");
|
||||
// System.out.println("TOC确认收入:" + bdBusitypeEntity3.getPkBusitype());
|
||||
|
||||
BdBusitypeEntity bdBusitypeEntity4 = queryBdBusitypeUtil.queryBdBusitype("TOC售后完成");
|
||||
System.out.println("TOC售后完成:" + bdBusitypeEntity4.getPkBusitype());
|
||||
// BdBusitypeEntity bdBusitypeEntity4 = queryBdBusitypeUtil.queryBdBusitype("TOC售后完成");
|
||||
// System.out.println("TOC售后完成:" + bdBusitypeEntity4.getPkBusitype());
|
||||
}
|
||||
}
|
|
@ -104,6 +104,7 @@ public class DeleteU8cDataUtil {
|
|||
|
||||
/**
|
||||
* 销售订单取消签字
|
||||
* 每1000条取消签字,需要236秒,平均0.2秒一条
|
||||
*/
|
||||
public void cancelSignatureSoSaleV2() {
|
||||
try {
|
||||
|
|
Loading…
Reference in New Issue