|
|
@@ -823,9 +823,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
boolean statusBookingAgentId = ObjectUtils.isNotNull(details.getBookingAgentId()) && !details.getBookingAgentId().equals(bills.getBookingAgentId());
|
|
|
boolean shippingAgencyId = ObjectUtils.isNotNull(details.getShippingAgencyId()) && !details.getShippingAgencyId().equals(bills.getShippingAgencyId());
|
|
|
boolean carrierId = ObjectUtils.isNotNull(details.getCarrierId()) && !details.getCarrierId().equals(bills.getCarrierId());
|
|
|
+ boolean foreignAgencyId = ObjectUtils.isNotNull(details.getForeignAgencyId()) && !details.getForeignAgencyId().equals(bills.getForeignAgencyId());
|
|
|
if (statusEtd || statusEta || statusAtd || statusAta || statusVessel || statusVoyageNo || statusMblno || statusPolId
|
|
|
|| statusPodId || statusCyTrailerTime || statusCyReturnTime || statusLineId || statusForwarding || statusBookingAgentId
|
|
|
- || shippingAgencyId || bookingDate || carrierId) {
|
|
|
+ || shippingAgencyId || bookingDate || carrierId || foreignAgencyId) {
|
|
|
billsList = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
.eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(Bills::getIsDeleted, 0)
|
|
|
@@ -868,6 +869,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
item.setCarrierCnName(bills.getCarrierCnName());
|
|
|
item.setCarrierEnName(bills.getCarrierEnName());
|
|
|
item.setCarrierArgreementNo(bills.getCarrierArgreementNo());
|
|
|
+ item.setForeignAgencyId(bills.getForeignAgencyId());
|
|
|
+ item.setForeignAgencyCode(bills.getForeignAgencyCode());
|
|
|
+ item.setForeignAgencyCnName(bills.getForeignAgencyCnName());
|
|
|
+ item.setForeignAgencyEnName(bills.getForeignAgencyEnName());
|
|
|
+ item.setForeignAgencyDetails(bills.getForeignAgencyDetails());
|
|
|
+ item.setForeignCntyName(bills.getForeignCntyName());
|
|
|
}
|
|
|
this.updateBatchById(billsList);
|
|
|
List<Long> billIds = billsList.stream().map(Bills::getId).collect(Collectors.toList());
|
|
|
@@ -1160,16 +1167,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
item.setVesselCnName(bills.getVesselCnName());
|
|
|
item.setVesselEnName(bills.getVesselEnName());
|
|
|
item.setVoyageNo(bills.getVoyageNo());
|
|
|
- item.setPolId(bills.getPolId());
|
|
|
- item.setPolCnName(bills.getPolCnName());
|
|
|
- item.setPolEnName(bills.getPolEnName());
|
|
|
- item.setPolCode(bills.getPolCode());
|
|
|
- item.setPolNamePrint(bills.getPolNamePrint());
|
|
|
- item.setPodId(bills.getPodId());
|
|
|
- item.setPodCnName(bills.getPodCnName());
|
|
|
- item.setPodEnName(bills.getPodEnName());
|
|
|
- item.setPodNamePrint(bills.getPodNamePrint());
|
|
|
- item.setPodCode(bills.getPodCode());
|
|
|
item.setCyTrailerTime(bills.getCyTrailerTime());
|
|
|
item.setCyReturnTime(bills.getCyReturnTime());
|
|
|
item.setLineId(bills.getLineId());
|
|
|
@@ -1189,6 +1186,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
item.setDestinationName(bills.getDestinationName());
|
|
|
item.setDestinationCode(bills.getDestinationCode());
|
|
|
item.setDestinationNamePrint(bills.getDestinationNamePrint());
|
|
|
+ item.setForeignAgencyId(bills.getForeignAgencyId());
|
|
|
+ item.setForeignAgencyCode(bills.getForeignAgencyCode());
|
|
|
+ item.setForeignAgencyCnName(bills.getForeignAgencyCnName());
|
|
|
+ item.setForeignAgencyEnName(bills.getForeignAgencyEnName());
|
|
|
+ item.setForeignAgencyDetails(bills.getForeignAgencyDetails());
|
|
|
+ item.setForeignCntyName(bills.getForeignCntyName());
|
|
|
item.setCarrierId(bills.getCarrierId());
|
|
|
item.setCarrierCnName(bills.getCarrierCnName());
|
|
|
item.setCarrierEnName(bills.getCarrierEnName());
|
|
|
@@ -1198,7 +1201,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
}
|
|
|
this.updateBatchById(billsList);
|
|
|
-
|
|
|
BigDecimal amountDr = bills.getAmountDr();
|
|
|
BigDecimal amountCr = bills.getAmountCr();
|
|
|
BigDecimal amountProfit = bills.getAmountProfit();
|
|
|
@@ -1208,7 +1210,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
BigDecimal amountDrLoc = bills.getAmountDrLoc();
|
|
|
BigDecimal amountCrLoc = bills.getAmountCrLoc();
|
|
|
BigDecimal amountProfitLoc = bills.getAmountProfitLoc();
|
|
|
+ BigDecimal grossWeight = bills.getGrossWeight();
|
|
|
+ BigDecimal quantity = bills.getQuantity();
|
|
|
+ BigDecimal measurement = bills.getMeasurement();
|
|
|
Integer teuTotal = bills.getTeuTotal();
|
|
|
+ String marks = "";
|
|
|
+ String commodityDescr = "";
|
|
|
if (!billsList.isEmpty()) {
|
|
|
amountDr = amountDr.add(billsList.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
amountCr = amountCr.add(billsList.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
@@ -1220,6 +1227,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
amountCrLoc = amountCrLoc.add(billsList.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
amountProfitLoc = amountProfitLoc.add(billsList.stream().map(Bills::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
teuTotal = teuTotal + billsList.stream().map(Bills::getTeu).filter(Objects::nonNull).reduce(0, Integer::sum);
|
|
|
+ grossWeight = grossWeight.add(billsList.stream().map(Bills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ quantity = quantity.add(billsList.stream().map(Bills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ measurement = measurement.add(billsList.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ marks = billsList.stream().map(Bills::getMarks).filter(Objects::nonNull).collect(Collectors.joining("&"));
|
|
|
+ commodityDescr = billsList.stream().map(Bills::getCommodityDescr).filter(Objects::nonNull).collect(Collectors.joining("&"));
|
|
|
+ this.itemCopy(bills, billsList);
|
|
|
}
|
|
|
bills.setTeuTotal(teuTotal);
|
|
|
bills.setAmountDr(amountDr);
|
|
|
@@ -1231,12 +1244,101 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
bills.setAmountDrLoc(amountDrLoc);
|
|
|
bills.setAmountCrLoc(amountCrLoc);
|
|
|
bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
+ bills.setGrossWeight(grossWeight);
|
|
|
+ bills.setQuantity(quantity);
|
|
|
+ bills.setMeasurement(measurement);
|
|
|
bills.setSplitOrderSum(bills.getSplitOrderSum() + billsList.size());
|
|
|
+ if (ObjectUtils.isNotNull(marks)) {
|
|
|
+ marks = marks.replaceAll("N/M", "");
|
|
|
+ bills.setMarks(bills.getMarks() + "&" + marks);
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(commodityDescr)) {
|
|
|
+ bills.setCommodityDescr(bills.getCommodityDescr() + "&" + commodityDescr);
|
|
|
+ }
|
|
|
baseMapper.updateById(bills);
|
|
|
}
|
|
|
return R.data("操作成功");
|
|
|
}
|
|
|
|
|
|
+ private void itemCopy(Bills bills, List<Bills> billsList) {
|
|
|
+ List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
|
|
|
+ .eq(Containers::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Containers::getIsDeleted, 0)
|
|
|
+ .in(Containers::getPid, billsList.stream().map(Bills::getId).collect(Collectors.toList())));
|
|
|
+ if (!containersList.isEmpty()) {
|
|
|
+ List<Containers> containersListNew = new ArrayList<>();
|
|
|
+ for (Containers item : containersList) {
|
|
|
+ item.setSrcSplitOrderId(item.getPid());
|
|
|
+ item.setSrcId(item.getId());
|
|
|
+ item.setId(null);
|
|
|
+ item.setPid(bills.getId());
|
|
|
+ item.setCreateTime(new Date());
|
|
|
+ item.setCreateUser(AuthUtil.getUserId());
|
|
|
+ item.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ item.setBranchId(bills.getBranchId());
|
|
|
+ item.setUpdateUser(null);
|
|
|
+ item.setUpdateTime(null);
|
|
|
+ item.setUpdateUserName(null);
|
|
|
+ containersListNew.add(item);
|
|
|
+ }
|
|
|
+ containersService.saveBatch(containersListNew);
|
|
|
+ List<ContainersCommodity> containersCommodityList = containersCommodityService.list(new LambdaQueryWrapper<ContainersCommodity>()
|
|
|
+ .eq(ContainersCommodity::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(ContainersCommodity::getIsDeleted, 0)
|
|
|
+ .in(ContainersCommodity::getPpId, billsList.stream().map(Bills::getId).collect(Collectors.toList())));
|
|
|
+ if (!containersCommodityList.isEmpty()) {
|
|
|
+ List<ContainersCommodity> containersCommodityListNew = new ArrayList<>();
|
|
|
+ for (ContainersCommodity item : containersCommodityList) {
|
|
|
+ Containers containers = containersListNew.stream().filter(e -> e.getSrcId().equals(item.getPid())).findFirst().orElse(null);
|
|
|
+ if (containers != null) {
|
|
|
+ item.setSrcSplitOrderId(item.getPid());
|
|
|
+ item.setId(null);
|
|
|
+ item.setCreateTime(new Date());
|
|
|
+ item.setCreateUser(AuthUtil.getUserId());
|
|
|
+ item.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ item.setBranchId(bills.getBranchId());
|
|
|
+ item.setUpdateUser(null);
|
|
|
+ item.setUpdateTime(null);
|
|
|
+ item.setUpdateUserName(null);
|
|
|
+ item.setPid(containers.getId());
|
|
|
+ item.setPpId(bills.getId());
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("装箱明细数据错误,请联系管理员");
|
|
|
+ }
|
|
|
+ containersCommodityListNew.add(item);
|
|
|
+ }
|
|
|
+ containersCommodityService.saveBatch(containersCommodityListNew);
|
|
|
+ }
|
|
|
+ List<ContainersBills> containersBillsList = containersBillsService.list(new LambdaQueryWrapper<ContainersBills>()
|
|
|
+ .eq(ContainersBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(ContainersBills::getIsDeleted, 0)
|
|
|
+ .in(ContainersBills::getPpId, billsList.stream().map(Bills::getId).collect(Collectors.toList())));
|
|
|
+ if (!containersBillsList.isEmpty()) {
|
|
|
+ List<ContainersBills> containersBillsListNew = new ArrayList<>();
|
|
|
+ for (ContainersBills item : containersBillsList) {
|
|
|
+ Containers containers = containersListNew.stream().filter(e -> e.getSrcId().equals(item.getPid())).findFirst().orElse(null);
|
|
|
+ if (containers != null) {
|
|
|
+ item.setSrcSplitOrderId(item.getPid());
|
|
|
+ item.setId(null);
|
|
|
+ item.setCreateTime(new Date());
|
|
|
+ item.setCreateUser(AuthUtil.getUserId());
|
|
|
+ item.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ item.setBranchId(bills.getBranchId());
|
|
|
+ item.setUpdateUser(null);
|
|
|
+ item.setUpdateTime(null);
|
|
|
+ item.setUpdateUserName(null);
|
|
|
+ item.setPid(containers.getId());
|
|
|
+ item.setPpId(bills.getId());
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("装箱明细数据错误,请联系管理员");
|
|
|
+ }
|
|
|
+ containersBillsListNew.add(item);
|
|
|
+ }
|
|
|
+ containersBillsService.saveBatch(containersBillsListNew);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R revokeReinsurancePolicy(String ids, String id) {
|
|
|
@@ -1253,6 +1355,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
for (Bills item : billsList) {
|
|
|
item.setMasterId(0L);
|
|
|
item.setMasterBillNo("");
|
|
|
+ item.setMblno("");
|
|
|
item.setUpdateTime(new Date());
|
|
|
item.setUpdateUser(AuthUtil.getUserId());
|
|
|
item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
@@ -1267,6 +1370,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
BigDecimal amountDrLoc = bills.getAmountDrLoc();
|
|
|
BigDecimal amountCrLoc = bills.getAmountCrLoc();
|
|
|
BigDecimal amountProfitLoc = bills.getAmountProfitLoc();
|
|
|
+ BigDecimal grossWeight = bills.getGrossWeight();
|
|
|
+ BigDecimal quantity = bills.getQuantity();
|
|
|
+ BigDecimal measurement = bills.getMeasurement();
|
|
|
Integer teuTotal = bills.getTeuTotal();
|
|
|
if (!billsList.isEmpty()) {
|
|
|
amountDr = amountDr.subtract(billsList.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
@@ -1280,6 +1386,32 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
amountProfitLoc = amountProfitLoc.subtract(billsList.stream().map(Bills::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
amountProfitLoc = amountProfitLoc.subtract(billsList.stream().map(Bills::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
teuTotal = teuTotal - billsList.stream().map(Bills::getTeu).filter(Objects::nonNull).reduce(0, Integer::sum);
|
|
|
+ grossWeight = grossWeight.subtract(billsList.stream().map(Bills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ quantity = quantity.subtract(billsList.stream().map(Bills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ measurement = measurement.subtract(billsList.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ this.itemRevoke(bills, billsList);
|
|
|
+ }
|
|
|
+ List<Bills> billsList1 = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getMasterId, bills.getId())
|
|
|
+ .notIn(Bills::getId, idArr));
|
|
|
+ if (!billsList1.isEmpty()) {
|
|
|
+ String marks = billsList.stream().map(Bills::getMarks).filter(Objects::nonNull).collect(Collectors.joining("&"));
|
|
|
+ String commodityDescr = billsList.stream().map(Bills::getCommodityDescr).filter(Objects::nonNull).collect(Collectors.joining("&"));
|
|
|
+ if (ObjectUtils.isNotNull(marks)) {
|
|
|
+ bills.setMarks(bills.getMarks() + "&" + marks);
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(commodityDescr)) {
|
|
|
+ bills.setCommodityDescr(bills.getCommodityDescr() + "&" + commodityDescr);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (ObjectUtils.isNotNull(bills.getMarks())) {
|
|
|
+ bills.setMarks(bills.getMarks().substring(0, bills.getMarks().indexOf("&")));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(bills.getCommodityDescr())) {
|
|
|
+ bills.setCommodityDescr(bills.getCommodityDescr().substring(0, bills.getCommodityDescr().indexOf("&")));
|
|
|
+ }
|
|
|
}
|
|
|
bills.setTeuTotal(teuTotal);
|
|
|
bills.setAmountDr(amountDr);
|
|
|
@@ -1291,6 +1423,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
bills.setAmountDrLoc(amountDrLoc);
|
|
|
bills.setAmountCrLoc(amountCrLoc);
|
|
|
bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
+ bills.setGrossWeight(grossWeight);
|
|
|
+ bills.setQuantity(quantity);
|
|
|
+ bills.setMeasurement(measurement);
|
|
|
bills.setMasterBillNo("");
|
|
|
bills.setMasterId(0L);
|
|
|
bills.setSplitOrderSum(bills.getSplitOrderSum() - billsList.size());
|
|
|
@@ -1299,6 +1434,35 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
return R.data("操作成功");
|
|
|
}
|
|
|
|
|
|
+ private void itemRevoke(Bills bills, List<Bills> billsList) {
|
|
|
+ List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
|
|
|
+ .eq(Containers::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Containers::getIsDeleted, 0)
|
|
|
+ .eq(Containers::getPid, bills.getId())
|
|
|
+ .in(Containers::getSrcSplitOrderId, billsList.stream().map(Bills::getId).collect(Collectors.toList()))
|
|
|
+ );
|
|
|
+ if (!containersList.isEmpty()) {
|
|
|
+ containersService.removeByIds(containersList.stream().map(Containers::getId).collect(Collectors.toList()));
|
|
|
+ List<ContainersCommodity> containersCommodityList = containersCommodityService.list(new LambdaQueryWrapper<ContainersCommodity>()
|
|
|
+ .eq(ContainersCommodity::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(ContainersCommodity::getPpId, bills.getId())
|
|
|
+ .in(ContainersCommodity::getSrcSplitOrderId, billsList.stream().map(Bills::getId).collect(Collectors.toList()))
|
|
|
+ );
|
|
|
+ if (!containersCommodityList.isEmpty()) {
|
|
|
+ containersCommodityService.removeByIds(containersCommodityList.stream().map(ContainersCommodity::getId).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ List<ContainersBills> containersBillsList = containersBillsService.list(new LambdaQueryWrapper<ContainersBills>()
|
|
|
+ .eq(ContainersBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(ContainersBills::getIsDeleted, 0)
|
|
|
+ .eq(ContainersBills::getPpId, bills.getId())
|
|
|
+ .in(ContainersBills::getSrcSplitOrderId, billsList.stream().map(Bills::getId).collect(Collectors.toList()))
|
|
|
+ );
|
|
|
+ if (!containersBillsList.isEmpty()) {
|
|
|
+ containersBillsService.removeByIds(containersBillsList.stream().map(ContainersBills::getId).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void removeIds(List<Long> ids) {
|
|
|
@@ -1355,6 +1519,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
.eq(Bills::getIsDeleted, 0)
|
|
|
.in(Bills::getId, ids));
|
|
|
for (Bills item : billsList) {
|
|
|
+ if ("MH".equals(item.getBillType()) && ObjectUtils.isNotNull(item.getMasterBillNo())) {
|
|
|
+ throw new RuntimeException("单号:" + item.getBillNo() + "已添加主单,请先撤销在退舱");
|
|
|
+ }
|
|
|
+ if ("MM".equals(item.getBillType()) && item.getSplitOrderSum() != 0) {
|
|
|
+ throw new RuntimeException("单号:" + item.getBillNo() + "主单下存在分单,请先撤销在退舱");
|
|
|
+ }
|
|
|
if (item.getBillStatus() == 1) {
|
|
|
throw new RuntimeException("已退舱,请勿重复操作");
|
|
|
}
|
|
|
@@ -1880,6 +2050,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
copyBills.setBookingNo("");
|
|
|
copyBills.setMasterBillNo(null);
|
|
|
copyBills.setMasterId(null);
|
|
|
+ copyBills.setSplitOrderSum(0);
|
|
|
+ copyBills.setTeuTotal(0);
|
|
|
copyBills.setStatus(0);
|
|
|
copyBills.setBillStatus(0);
|
|
|
copyBills.setBillingStatus(0);
|
|
|
@@ -3455,6 +3627,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
copyBills.setStatus(0);
|
|
|
copyBills.setBillStatus(0);
|
|
|
copyBills.setBillingStatus(0);
|
|
|
+ copyBills.setSplitOrderSum(0);
|
|
|
+ copyBills.setTeuTotal(0);
|
|
|
copyBills.setWhetherSail(null);
|
|
|
copyBills.setLogisticsStatus(null);
|
|
|
copyBills.setWhetherReachHarbor(null);
|