Browse Source

毛重、净重、体积

java8
han\hanst 3 months ago
parent
commit
cd0c55e897
  1. 77
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java

77
src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java

@ -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);

Loading…
Cancel
Save