|
|
@@ -29,6 +29,7 @@ import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.core.tool.utils.StringUtil;
|
|
|
+import org.springblade.los.Util.BigDecimalUtils;
|
|
|
import org.springblade.los.Util.IDeptUtils;
|
|
|
import org.springblade.los.Util.StringTools;
|
|
|
import org.springblade.los.Util.ZrUtil;
|
|
|
@@ -487,6 +488,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
Integer other = 0;
|
|
|
BigDecimal teu = new BigDecimal("0.00");
|
|
|
StringBuilder boxTypeSum = new StringBuilder();
|
|
|
+ StringBuilder quantityCntrTypesDescr = new StringBuilder();
|
|
|
+ quantityCntrTypesDescr.append("SAY ");
|
|
|
if (ObjectUtils.isNull(bills.getCfsQuantity()) || bills.getCfsQuantity().compareTo(new BigDecimal("0.00")) == 0) {
|
|
|
if (ObjectUtils.isNotNull(bills.getPreContainersList())) {
|
|
|
bills.setCfsMeasurement(new BigDecimal("0.00"));
|
|
|
@@ -538,10 +541,17 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
other += item.getQuantity();
|
|
|
}
|
|
|
boxTypeSum.append(item.getCntrTypeCode()).append("*").append(item.getQuantity()).append(",");
|
|
|
+ quantityCntrTypesDescr.append(BigDecimalUtils.convertToEnglish(new BigDecimal(item.getQuantity() + ""))).append(" AND");
|
|
|
if (ObjectUtils.isNotNull(item.getQuantity()) && ObjectUtils.isNotNull(item.getTeu())) {
|
|
|
teu = teu.add(new BigDecimal(item.getQuantity()).multiply(item.getTeu()));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (quantityCntrTypesDescr.length() > 0) {
|
|
|
+ quantityCntrTypesDescr = new StringBuilder(quantityCntrTypesDescr.substring(0, quantityCntrTypesDescr.length() - 4));
|
|
|
+ quantityCntrTypesDescr.append("ONLY.");
|
|
|
+ bills.setQuantityCntrTypesDescr(quantityCntrTypesDescr.toString());
|
|
|
+ }
|
|
|
preContainersService.saveOrUpdateBatch(bills.getPreContainersList());
|
|
|
List<Long> idList = bills.getPreContainersList().stream().map(PreContainers::getId).collect(Collectors.toList());
|
|
|
List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
|
|
|
@@ -847,7 +857,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
bills.setQuantity(quantity);
|
|
|
bills.setGrossWeight(grossWeight);
|
|
|
bills.setMeasurement(measurement);
|
|
|
-
|
|
|
+ bills.setQuantityPackingDescr("SAY " + BigDecimalUtils.convertToEnglish(bills.getQuantity()) + " " + bills.getPackingUnit() + " ONLY.");
|
|
|
if (ObjectUtils.isNotNull(bills.getDetail())) {
|
|
|
Object seaBillsDetailObject = StringTools.handle(bills.getDetail(), "SeaBillsDetail");
|
|
|
SeaBillsDetail seaBillsDetail = JSONObject.parseObject(JSONObject.toJSONString(seaBillsDetailObject), SeaBillsDetail.class);
|
|
|
@@ -3576,4 +3586,227 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
|
|
|
return R.data("0");
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R batchCopyBills(String ids, String billType, String copyCntr, String copyFee) {
|
|
|
+ if (ObjectUtils.isNull(ids)) {
|
|
|
+ throw new SecurityException("缺少必要参数");
|
|
|
+ }
|
|
|
+ List<Bills> billsList = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .in(Bills::getId, Func.toLongList(ids)));
|
|
|
+ if (billsList.isEmpty()) {
|
|
|
+ throw new SecurityException("未查到单据信息");
|
|
|
+ }
|
|
|
+ List<SeaBillsDetail> seaBillsDetailList = seaBillsDetailService.list(new LambdaQueryWrapper<SeaBillsDetail>()
|
|
|
+ .eq(SeaBillsDetail::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .in(SeaBillsDetail::getPid, Func.toLongList(ids)));
|
|
|
+ List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(copyFee) && "1".equals(copyFee)) {
|
|
|
+ feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .in(FeeCenter::getPid, Func.toLongList(ids)));
|
|
|
+ }
|
|
|
+ List<PreContainers> preContainersList = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(copyFee) && "1".equals(copyCntr)) {
|
|
|
+ preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
|
|
|
+ .eq(PreContainers::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PreContainers::getIsDeleted, 0)
|
|
|
+ .in(PreContainers::getPid, Func.toLongList(ids)));
|
|
|
+ }
|
|
|
+ BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
|
|
|
+ .select(BusinessType::getId)
|
|
|
+ .eq(BusinessType::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BusinessType::getIsDeleted, 0)
|
|
|
+ .eq(BusinessType::getStatus, 0)
|
|
|
+ .eq(BusinessType::getCode, billsList.get(0).getBusinessTypes()));
|
|
|
+ if (businessType == null) {
|
|
|
+ throw new RuntimeException("未找到可用业务类型");
|
|
|
+ }
|
|
|
+ List<Bills> copyBillsList = new ArrayList<>();
|
|
|
+ for (Bills item : billsList) {
|
|
|
+ Bills copyBills = new Bills();
|
|
|
+ BeanUtil.copyProperties(item, copyBills);
|
|
|
+ copyBills.setTemporaryId(item.getId());
|
|
|
+ copyBills.setId(null);
|
|
|
+ BusinessBillNo businessBillNo = new BusinessBillNo();
|
|
|
+ businessBillNo.setBusinessTypeId(businessType.getId());
|
|
|
+ if ("dry".equals(copyBills.getCargoType())) {
|
|
|
+ businessBillNo.setCode(item.getBusinessTypes() + "-PH");
|
|
|
+ } else if ("danger".equals(copyBills.getCargoType())) {
|
|
|
+ businessBillNo.setCode(item.getBusinessTypes() + "-WXP");
|
|
|
+ } else if ("reefer".equals(copyBills.getCargoType())) {
|
|
|
+ businessBillNo.setCode(item.getBusinessTypes() + "-DG");
|
|
|
+ } else {
|
|
|
+ businessBillNo.setCode(item.getBusinessTypes() + "-PH");
|
|
|
+ }
|
|
|
+ R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
|
|
|
+ if (!clientBillNo.isSuccess()) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ throw new RuntimeException("生成订单编号失败");
|
|
|
+ }
|
|
|
+ copyBills.setBillNo((String) clientBillNo.getData());
|
|
|
+ copyBills.setOperatorId(AuthUtil.getUserId());
|
|
|
+ copyBills.setOperatorName(AuthUtil.getUserName());
|
|
|
+ copyBills.setBillNo("");
|
|
|
+ copyBills.setMblno("");
|
|
|
+ copyBills.setHblno("");
|
|
|
+ copyBills.setRefno("");
|
|
|
+ copyBills.setBookingNo("");
|
|
|
+ copyBills.setStatus(0);
|
|
|
+ copyBills.setBillStatus(0);
|
|
|
+ copyBills.setBillingStatus(0);
|
|
|
+ copyBills.setAmountDr(new BigDecimal("0.00"));
|
|
|
+ copyBills.setAmountCr(new BigDecimal("0.00"));
|
|
|
+ copyBills.setAmountProfit(new BigDecimal("0.00"));
|
|
|
+ copyBills.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
+ copyBills.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
+ copyBills.setAmountProfitUsd(new BigDecimal("0.00"));
|
|
|
+ copyBills.setAmountDrLoc(new BigDecimal("0.00"));
|
|
|
+ copyBills.setAmountCrLoc(new BigDecimal("0.00"));
|
|
|
+ copyBills.setAmountProfitLoc(new BigDecimal("0.00"));
|
|
|
+ copyBills.setCheckDrStatus(0);
|
|
|
+ copyBills.setCheckDrStatusDescr("未对账");
|
|
|
+ copyBills.setCheckCrStatus(0);
|
|
|
+ copyBills.setCheckCrStatusDescr("未申请");
|
|
|
+ copyBills.setStlDrStatus(0);
|
|
|
+ copyBills.setStlDrStatusDescr("未结");
|
|
|
+ copyBills.setStlCrStatus(0);
|
|
|
+ copyBills.setStlCrStatusDescr("未结");
|
|
|
+ copyBills.setInvoiceDrStatus(0);
|
|
|
+ copyBills.setInvoiceDrStatusDescr("未开");
|
|
|
+ copyBills.setInvoiceCrStatus(0);
|
|
|
+ copyBills.setInvoiceCrStatusDescr("未开");
|
|
|
+ copyBills.setBillStatus(0);
|
|
|
+ copyBills.setAccountStatus(0);
|
|
|
+ copyBills.setCfsQuantity(new BigDecimal("0.00"));
|
|
|
+ copyBills.setCfsGrossWeight(new BigDecimal("0.00"));
|
|
|
+ copyBills.setCfsMeasurement(new BigDecimal("0.00"));
|
|
|
+ copyBillsList.add(copyBills);
|
|
|
+ }
|
|
|
+ this.saveBatch(copyBillsList);
|
|
|
+ List<FeeCenter> copyFeeCenterList = new ArrayList<>();
|
|
|
+ List<PreContainers> copyPreContainersList = new ArrayList<>();
|
|
|
+ List<SeaBillsDetail> copySeaBillsDetailList = new ArrayList<>();
|
|
|
+ for (Bills item : copyBillsList) {
|
|
|
+ if (!seaBillsDetailList.isEmpty()) {
|
|
|
+ SeaBillsDetail seaBillsDetail = seaBillsDetailList.stream().filter(e -> e.getPid().equals(item.getTemporaryId()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ if (seaBillsDetail != null) {
|
|
|
+ seaBillsDetail.setId(null);
|
|
|
+ seaBillsDetail.setPid(item.getId());
|
|
|
+ seaBillsDetail.setCreateUser(AuthUtil.getUserId());
|
|
|
+ seaBillsDetail.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ seaBillsDetail.setCreateDept(item.getCreateDept());
|
|
|
+ seaBillsDetail.setCreateDeptName(item.getCreateDeptName());
|
|
|
+ seaBillsDetail.setCreateTime(new Date());
|
|
|
+ copySeaBillsDetailList.add(seaBillsDetail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(copyFee) && "1".equals(copyFee) && !feeCenterList.isEmpty()) {
|
|
|
+ List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> e.getPid().equals(item.getTemporaryId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ for (FeeCenter feeCenter : feeCenters) {
|
|
|
+ feeCenter.setId(null);
|
|
|
+ feeCenter.setPid(item.getId());
|
|
|
+ feeCenter.setCreateUser(AuthUtil.getUserId());
|
|
|
+ feeCenter.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenter.setCreateDept(item.getCreateDept());
|
|
|
+ feeCenter.setCreateDeptName(item.getCreateDeptName());
|
|
|
+ feeCenter.setCreateTime(new Date());
|
|
|
+ feeCenter.setAccBillId(null);
|
|
|
+ feeCenter.setAccBillNo("");
|
|
|
+ feeCenter.setAccDate(null);
|
|
|
+ feeCenter.setAccStatus(0);
|
|
|
+ feeCenter.setAccById(0L);
|
|
|
+ feeCenter.setAccByName("");
|
|
|
+ feeCenter.setCheckBillId(0L);
|
|
|
+ feeCenter.setCheckBillNo("");
|
|
|
+ feeCenter.setCheckDate(null);
|
|
|
+ feeCenter.setCheckAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setCheckStatus(0);
|
|
|
+ feeCenter.setCheckById(0L);
|
|
|
+ feeCenter.setCheckByName("");
|
|
|
+ feeCenter.setStlBillId(0L);
|
|
|
+ feeCenter.setStlBillNo("");
|
|
|
+ feeCenter.setStlDate(null);
|
|
|
+ feeCenter.setStlOrgAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlCurCode("");
|
|
|
+ feeCenter.setStlExrate(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlExrateLoc(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlAmountLoc(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setStlStatus(0);
|
|
|
+ feeCenter.setStlById(0L);
|
|
|
+ feeCenter.setStlByName("");
|
|
|
+ feeCenter.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setUnsettledAmount(feeCenter.getAmount());
|
|
|
+ feeCenter.setVoucherBillId(0L);
|
|
|
+ feeCenter.setVoucherBillNo("");
|
|
|
+ feeCenter.setVoucherNo("");
|
|
|
+ feeCenter.setVoucherDate(null);
|
|
|
+ feeCenter.setVoucherStatus(0);
|
|
|
+ feeCenter.setVoucherById(0L);
|
|
|
+ feeCenter.setVoucherByName("");
|
|
|
+ feeCenter.setInvoiceBillId("");
|
|
|
+ feeCenter.setInvoiceBillNo("");
|
|
|
+ feeCenter.setInvoiceNo("");
|
|
|
+ feeCenter.setInvoiceDate(null);
|
|
|
+ feeCenter.setInvoiceStatus(0);
|
|
|
+ feeCenter.setInvoiceCurCode("");
|
|
|
+ feeCenter.setInvoiceExrate(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setInvoiceAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setInvoiceAmountLoc(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setUninvoicedAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setAppliedAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setAppliedInvoiceAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setReconciliationAmount(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setAppliedAmountStl(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setAppliedInvoiceAmountStl(new BigDecimal("0.00"));
|
|
|
+ feeCenter.setInvoiceById(0L);
|
|
|
+ feeCenter.setInvoiceByName("");
|
|
|
+ feeCenter.setIsSignfor(0);
|
|
|
+ feeCenter.setSignforId(0);
|
|
|
+ feeCenter.setSignforName("");
|
|
|
+ feeCenter.setSignforDate(null);
|
|
|
+ feeCenter.setApplyId(0L);
|
|
|
+ feeCenter.setApplyName("");
|
|
|
+ feeCenter.setApplyTime(null);
|
|
|
+ feeCenter.setApproverId(0L);
|
|
|
+ feeCenter.setApproverName("");
|
|
|
+ feeCenter.setApproveTime(null);
|
|
|
+ feeCenter.setAuditStatus("0");
|
|
|
+ feeCenter.setStlPid(null);
|
|
|
+ copyFeeCenterList.add(feeCenter);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(copyFee) && "1".equals(copyCntr) && !preContainersList.isEmpty()) {
|
|
|
+ List<PreContainers> preContainers = preContainersList.stream().filter(e -> e.getPid().equals(item.getTemporaryId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ for (PreContainers containers : preContainers) {
|
|
|
+ containers.setId(null);
|
|
|
+ containers.setPid(item.getId());
|
|
|
+ containers.setCreateUser(AuthUtil.getUserId());
|
|
|
+ containers.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ containers.setCreateDept(item.getCreateDept());
|
|
|
+ containers.setCreateDeptName(item.getCreateDeptName());
|
|
|
+ containers.setCreateTime(new Date());
|
|
|
+ copyPreContainersList.add(containers);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!copyFeeCenterList.isEmpty()) {
|
|
|
+ feeCenterService.saveBatch(copyFeeCenterList);
|
|
|
+ }
|
|
|
+ if (!copyPreContainersList.isEmpty()) {
|
|
|
+ preContainersService.saveBatch(copyPreContainersList);
|
|
|
+ }
|
|
|
+ if (!copySeaBillsDetailList.isEmpty()) {
|
|
|
+ seaBillsDetailService.saveBatch(copySeaBillsDetailList);
|
|
|
+ }
|
|
|
+ return R.data("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
}
|