|
|
|
@ -2324,7 +2324,10 @@ public class CoDelServiceImpl implements CoDelService { |
|
|
|
Optional<EcssCoDelPalletHeaderData> palletHeaderData = palletHeaderDataList.isEmpty()? Optional.empty() |
|
|
|
:palletHeaderDataList.stream().max(Comparator.comparing(EcssCoDelPalletHeaderData::getHeight)); |
|
|
|
// 总托数 |
|
|
|
Integer totalPlt = palletHeaderDataList.isEmpty()?0:palletHeaderDataList.get(0).getPalletQty(); |
|
|
|
Integer totalPlt = palletHeaderDataList.stream() |
|
|
|
.map(EcssCoDelPalletHeaderData::getPalletQty) |
|
|
|
.filter(Objects::nonNull) // 防止空指针 |
|
|
|
.reduce(0, Integer::sum); |
|
|
|
// 发货通知单明细 |
|
|
|
List<Map> detailList = coDelMapper.exportEcssCoDelNotifyDetail(data); |
|
|
|
// 获取poNo |
|
|
|
@ -2467,13 +2470,20 @@ public class CoDelServiceImpl implements CoDelService { |
|
|
|
template.addVar("Shipping_Mark", stringInput(data.getShippingMark())); |
|
|
|
// 体积计算:优先使用栈板体积,栈板不存在时根据装箱明细的物料计算体积 |
|
|
|
BigDecimal totalVolume = BigDecimal.ZERO; |
|
|
|
if (palletHeaderData.isPresent()) { |
|
|
|
// 使用栈板体积计算 |
|
|
|
totalVolume = palletHeaderData.get().getLength() |
|
|
|
.multiply(palletHeaderData.get().getWidth()) |
|
|
|
.multiply(palletHeaderData.get().getHeight()) |
|
|
|
.multiply(BigDecimal.valueOf(totalPlt)) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
if (!palletHeaderDataList.isEmpty()) { |
|
|
|
// 计算所有栈板的体积总和 |
|
|
|
for (EcssCoDelPalletHeaderData palletHeader : palletHeaderDataList) { |
|
|
|
if (palletHeader.getLength() != null && palletHeader.getWidth() != null |
|
|
|
&& palletHeader.getHeight() != null && palletHeader.getPalletQty() != null) { |
|
|
|
// 单个栈板体积 = 长 * 宽 * 高 * 数量 |
|
|
|
BigDecimal singlePalletVolume = palletHeader.getLength() |
|
|
|
.multiply(palletHeader.getWidth()) |
|
|
|
.multiply(palletHeader.getHeight()) |
|
|
|
.multiply(BigDecimal.valueOf(palletHeader.getPalletQty())); |
|
|
|
totalVolume = totalVolume.add(singlePalletVolume); |
|
|
|
} |
|
|
|
} |
|
|
|
totalVolume = totalVolume.setScale(2, RoundingMode.HALF_UP); |
|
|
|
} else { |
|
|
|
// 栈板不存在时,根据装箱明细的物料计算体积 |
|
|
|
totalVolume = calculateVolumeByMaterials(notifyHeader); |
|
|
|
@ -2557,24 +2567,55 @@ public class CoDelServiceImpl implements CoDelService { |
|
|
|
palletHeaderDataList.stream().max(Comparator.comparing(EcssCoDelPalletHeaderData::getHeight)); |
|
|
|
// 需要计算的 |
|
|
|
// 总托数 |
|
|
|
int totalPlt = palletHeaderDataList.isEmpty()?0:palletHeaderDataList.get(0).getPalletQty(); |
|
|
|
Integer totalPlt = palletHeaderDataList.stream() |
|
|
|
.map(EcssCoDelPalletHeaderData::getPalletQty) |
|
|
|
.filter(Objects::nonNull) // 防止空指针 |
|
|
|
.reduce(0, Integer::sum); |
|
|
|
template.addVar("quantity", ecHeader!=null?(totalPlt==0?ecHeader.getBoxQty()+"CTN("+ecHeader.getBoxQty()+"CTN)": |
|
|
|
totalPlt+"PLT("+ecHeader.getBoxQty()+"CTN)"):""); |
|
|
|
|
|
|
|
template.addVar("price", ttlAmount.setScale(2, RoundingMode.HALF_UP)); |
|
|
|
template.addVar("total_qty", totalQty); |
|
|
|
template.addVar("net_weight", netWeight.setScale(2, RoundingMode.HALF_UP)); |
|
|
|
template.addVar("gross_weight", grossWeight.setScale(2, RoundingMode.HALF_UP)); |
|
|
|
//BigDecimal grossWeight = ecHeader.getGrossWeight() != null ? ecHeader.getGrossWeight() : BigDecimal.ZERO; |
|
|
|
//template.addVar("grossWeight", (grossWeight.add(palletWeight)).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
//template.addVar("netWeight", ecHeader.getNetWeight() != null ? ecHeader.getNetWeight().setScale(2, RoundingMode.HALF_UP) : ""); |
|
|
|
// 托盘重量=根据每个pallet的重量*数量累加 |
|
|
|
BigDecimal palletWeight = BigDecimal.ZERO; |
|
|
|
for (EcssCoDelPalletHeaderData palletHeader : palletHeaderDataList) { |
|
|
|
if (palletHeader.getPallet() != null && !palletHeader.getPallet().isEmpty()) { |
|
|
|
// 根据pallet编号查询EcssPallet信息 |
|
|
|
List<EcssPalletData> palletDataList = coDelMapper.getPallet(notifyHeader.getSite(), notifyHeader.getBuNo(), palletHeader.getPallet()); |
|
|
|
if (!palletDataList.isEmpty()) { |
|
|
|
EcssPalletData palletData = palletDataList.get(0); |
|
|
|
if (palletData.getPalletWeight() != null && palletHeader.getPalletQty() != null) { |
|
|
|
// 栈板重量 = 单个栈板重量 * 数量 |
|
|
|
BigDecimal singlePalletWeight = palletData.getPalletWeight().multiply(BigDecimal.valueOf(palletHeader.getPalletQty())); |
|
|
|
palletWeight = palletWeight.add(singlePalletWeight); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
template.addVar("net_weight", (ecHeader!=null&&ecHeader.getNetWeight() != null ? ecHeader.getNetWeight() : BigDecimal.ZERO). |
|
|
|
setScale(2, RoundingMode.HALF_UP)); |
|
|
|
template.addVar("gross_weight", (ecHeader!=null&&ecHeader.getGrossWeight() != null ? ecHeader.getGrossWeight() : BigDecimal.ZERO). |
|
|
|
add(palletWeight).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
|
|
|
|
// 体积计算:优先使用栈板体积,栈板不存在时根据装箱明细的物料计算体积 |
|
|
|
BigDecimal totalVolume = BigDecimal.ZERO; |
|
|
|
if (palletHeaderData.isPresent()) { |
|
|
|
// 使用栈板体积计算 |
|
|
|
totalVolume = palletHeaderData.get().getLength() |
|
|
|
.multiply(palletHeaderData.get().getWidth()) |
|
|
|
.multiply(palletHeaderData.get().getHeight()) |
|
|
|
.multiply(BigDecimal.valueOf(totalPlt)) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
if (!palletHeaderDataList.isEmpty()) { |
|
|
|
// 计算所有栈板的体积总和 |
|
|
|
for (EcssCoDelPalletHeaderData palletHeader : palletHeaderDataList) { |
|
|
|
if (palletHeader.getLength() != null && palletHeader.getWidth() != null |
|
|
|
&& palletHeader.getHeight() != null && palletHeader.getPalletQty() != null) { |
|
|
|
// 单个栈板体积 = 长 * 宽 * 高 * 数量 |
|
|
|
BigDecimal singlePalletVolume = palletHeader.getLength() |
|
|
|
.multiply(palletHeader.getWidth()) |
|
|
|
.multiply(palletHeader.getHeight()) |
|
|
|
.multiply(BigDecimal.valueOf(palletHeader.getPalletQty())); |
|
|
|
totalVolume = totalVolume.add(singlePalletVolume); |
|
|
|
} |
|
|
|
} |
|
|
|
totalVolume = totalVolume.setScale(2, RoundingMode.HALF_UP); |
|
|
|
} else { |
|
|
|
// 栈板不存在时,根据装箱明细的物料计算体积 |
|
|
|
totalVolume = calculateVolumeByMaterials(notifyHeader); |
|
|
|
|