|
|
@@ -18,12 +18,14 @@ package org.springblade.los.business.aea.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
+import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.los.Util.IDeptUtils;
|
|
|
import org.springblade.los.basic.business.entity.BusinessType;
|
|
|
import org.springblade.los.basic.business.service.IBusinessTypeService;
|
|
|
@@ -36,8 +38,12 @@ import org.springblade.los.business.aea.service.IAeaBillsService;
|
|
|
import org.springblade.los.business.aea.vo.AeaBillsVO;
|
|
|
import org.springblade.los.business.files.entity.FilesCenter;
|
|
|
import org.springblade.los.business.files.service.IFilesCenterService;
|
|
|
-import org.springblade.los.business.sea.dto.WaitingBox;
|
|
|
-import org.springblade.los.business.sea.entity.*;
|
|
|
+import org.springblade.los.check.dto.LosAuditProecessDTO;
|
|
|
+import org.springblade.los.check.entity.LosAuditPathsActs;
|
|
|
+import org.springblade.los.check.entity.LosAuditPathsLevels;
|
|
|
+import org.springblade.los.check.service.IAuditPathsActsService;
|
|
|
+import org.springblade.los.check.service.IAuditPathsLevelsService;
|
|
|
+import org.springblade.los.check.service.IAuditProecessService;
|
|
|
import org.springblade.los.finance.fee.entity.FeeCenter;
|
|
|
import org.springblade.los.finance.fee.entity.FinAccBills;
|
|
|
import org.springblade.los.finance.fee.service.IFeeCenterService;
|
|
|
@@ -80,6 +86,12 @@ public class AeaBillsServiceImpl extends ServiceImpl<AeaBillsMapper, AeaBills> i
|
|
|
|
|
|
private final IFilesCenterService filesCenterService;
|
|
|
|
|
|
+ private final IAuditPathsActsService auditPathsActsService;
|
|
|
+
|
|
|
+ private final IAuditPathsLevelsService auditPathsLevelsService;
|
|
|
+
|
|
|
+ private final IAuditProecessService auditProecessService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<AeaBillsVO> selectAeaBillsPage(IPage<AeaBillsVO> page, AeaBillsVO aeaBills) {
|
|
|
return page.setRecords(baseMapper.selectAeaBillsPage(page, aeaBills));
|
|
|
@@ -507,4 +519,629 @@ public class AeaBillsServiceImpl extends ServiceImpl<AeaBillsMapper, AeaBills> i
|
|
|
return detail;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R increaseReinsurancePolicy(String ids, String id) {
|
|
|
+ if (ObjectUtils.isNull(ids) || ObjectUtils.isNull(id)) {
|
|
|
+ throw new RuntimeException("缺少必要参数");
|
|
|
+ }
|
|
|
+ AeaBills bills = baseMapper.selectById(id);
|
|
|
+ List<Long> idArr = Func.toLongList(ids);
|
|
|
+ if (idArr.size() > 0 && bills != null) {
|
|
|
+ if (ObjectUtils.isNull(bills.getMblno())) {
|
|
|
+ throw new RuntimeException("主单提单号不能为空,操作失败");
|
|
|
+ }
|
|
|
+ List<AeaBills> billsList = baseMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
+ .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AeaBills::getIsDeleted, 0)
|
|
|
+ .in(AeaBills::getId, idArr));
|
|
|
+ for (AeaBills item : billsList) {
|
|
|
+
|
|
|
+ item.setMasterId(bills.getId());
|
|
|
+ item.setMasterBillNo(bills.getBillNo());
|
|
|
+ item.setEtd(bills.getEtd());
|
|
|
+ item.setVoyageNo(bills.getVoyageNo());
|
|
|
+ item.setDestinationId(bills.getDestinationId());
|
|
|
+ item.setDestinationName(bills.getDestinationName());
|
|
|
+ item.setDestinationCode(bills.getDestinationCode());
|
|
|
+ item.setFinalDestinationId(bills.getFinalDestinationId());
|
|
|
+ item.setFinalDestinationCode(bills.getFinalDestinationCode());
|
|
|
+ item.setFinalDestinationName(bills.getFinalDestinationName());
|
|
|
+ item.setCyId(bills.getCyId());
|
|
|
+ item.setCyCode(bills.getCyCode());
|
|
|
+ item.setCyCnName(bills.getCyCnName());
|
|
|
+ item.setCyEnName(bills.getCyEnName());
|
|
|
+ item.setCyAddress(bills.getCyAddress());
|
|
|
+ item.setCyTel(bills.getCyTel());
|
|
|
+ item.setCyRemarks(bills.getCyRemarks());
|
|
|
+ item.setCarrierId(bills.getCarrierId());
|
|
|
+ item.setCarrierCnName(bills.getCarrierCnName());
|
|
|
+ item.setCarrierEnName(bills.getCarrierEnName());
|
|
|
+ item.setBookingDate(bills.getBookingDate());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ }
|
|
|
+ this.updateBatchById(billsList);
|
|
|
+
|
|
|
+ BigDecimal amountDr = bills.getAmountDr();
|
|
|
+ BigDecimal amountCr = bills.getAmountCr();
|
|
|
+ BigDecimal amountProfit = bills.getAmountProfit();
|
|
|
+ BigDecimal amountDrUsd = bills.getAmountDrUsd();
|
|
|
+ BigDecimal amountCrUsd = bills.getAmountCrUsd();
|
|
|
+ BigDecimal amountProfitUsd = bills.getAmountProfitUsd();
|
|
|
+ BigDecimal amountDrLoc = bills.getAmountDrLoc();
|
|
|
+ BigDecimal amountCrLoc = bills.getAmountCrLoc();
|
|
|
+ BigDecimal amountProfitLoc = bills.getAmountProfitLoc();
|
|
|
+ BigDecimal quantity = bills.getQuantity();
|
|
|
+ BigDecimal grossWeight = bills.getGrossWeight();
|
|
|
+ BigDecimal measurement = bills.getMeasurement();
|
|
|
+ if (billsList.size() > 0) {
|
|
|
+ amountDr = amountDr.add(billsList.stream().map(AeaBills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCr = amountCr.add(billsList.stream().map(AeaBills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountProfit = amountProfit.add(billsList.stream().map(AeaBills::getAmountProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountDrUsd = amountDrUsd.add(billsList.stream().map(AeaBills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrUsd = amountCrUsd.add(billsList.stream().map(AeaBills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountProfitUsd = amountProfitUsd.add(billsList.stream().map(AeaBills::getAmountProfitUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountDrLoc = amountDrLoc.add(billsList.stream().map(AeaBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrLoc = amountCrLoc.add(billsList.stream().map(AeaBills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountProfitLoc = amountProfitLoc.add(billsList.stream().map(AeaBills::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ quantity = quantity.add(billsList.stream().map(AeaBills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ grossWeight = grossWeight.add(billsList.stream().map(AeaBills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ measurement = measurement.add(billsList.stream().map(AeaBills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ bills.setAmountDr(amountDr);
|
|
|
+ bills.setAmountCr(amountCr);
|
|
|
+ bills.setAmountProfit(amountProfit);
|
|
|
+ bills.setAmountDrUsd(amountDrUsd);
|
|
|
+ bills.setAmountCrUsd(amountCrUsd);
|
|
|
+ bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
+ bills.setAmountDrLoc(amountDrLoc);
|
|
|
+ bills.setAmountCrLoc(amountCrLoc);
|
|
|
+ bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
+ bills.setQuantity(quantity);
|
|
|
+ bills.setGrossWeight(grossWeight);
|
|
|
+ bills.setMeasurement(measurement);
|
|
|
+ baseMapper.updateById(bills);
|
|
|
+ }
|
|
|
+ return R.data("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R revokeReinsurancePolicy(String ids, String id) {
|
|
|
+ if (ObjectUtils.isNull(ids) || ObjectUtils.isNull(id)) {
|
|
|
+ throw new RuntimeException("缺少必要参数");
|
|
|
+ }
|
|
|
+ AeaBills bills = baseMapper.selectById(id);
|
|
|
+ List<Long> idArr = Func.toLongList(ids);
|
|
|
+ if (idArr.size() > 0 && bills != null) {
|
|
|
+ List<AeaBills> billsList = baseMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
+ .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AeaBills::getIsDeleted, 0)
|
|
|
+ .in(AeaBills::getId, idArr));
|
|
|
+ for (AeaBills item : billsList) {
|
|
|
+ item.setMasterId(0L);
|
|
|
+ item.setMasterBillNo("");
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ }
|
|
|
+ this.updateBatchById(billsList);
|
|
|
+ BigDecimal amountDr = bills.getAmountDr();
|
|
|
+ BigDecimal amountCr = bills.getAmountCr();
|
|
|
+ BigDecimal amountProfit = bills.getAmountProfit();
|
|
|
+ BigDecimal amountDrUsd = bills.getAmountDrUsd();
|
|
|
+ BigDecimal amountCrUsd = bills.getAmountCrUsd();
|
|
|
+ BigDecimal amountProfitUsd = bills.getAmountProfitUsd();
|
|
|
+ BigDecimal amountDrLoc = bills.getAmountDrLoc();
|
|
|
+ BigDecimal amountCrLoc = bills.getAmountCrLoc();
|
|
|
+ BigDecimal amountProfitLoc = bills.getAmountProfitLoc();
|
|
|
+ BigDecimal quantity = bills.getQuantity();
|
|
|
+ BigDecimal grossWeight = bills.getGrossWeight();
|
|
|
+ BigDecimal measurement = bills.getMeasurement();
|
|
|
+ if (billsList.size() > 0) {
|
|
|
+ amountDr = amountDr.subtract(billsList.stream().map(AeaBills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCr = amountCr.subtract(billsList.stream().map(AeaBills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountProfit = amountProfit.subtract(billsList.stream().map(AeaBills::getAmountProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountDrUsd = amountDrUsd.subtract(billsList.stream().map(AeaBills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrUsd = amountCrUsd.subtract(billsList.stream().map(AeaBills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountProfitUsd = amountProfitUsd.subtract(billsList.stream().map(AeaBills::getAmountProfitUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountDrLoc = amountDrLoc.subtract(billsList.stream().map(AeaBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountCrLoc = amountCrLoc.subtract(billsList.stream().map(AeaBills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ amountProfitLoc = amountProfitLoc.subtract(billsList.stream().map(AeaBills::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ quantity = quantity.subtract(billsList.stream().map(AeaBills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ grossWeight = grossWeight.subtract(billsList.stream().map(AeaBills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ measurement = measurement.subtract(billsList.stream().map(AeaBills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ bills.setAmountDr(amountDr);
|
|
|
+ bills.setAmountCr(amountCr);
|
|
|
+ bills.setAmountProfit(amountProfit);
|
|
|
+ bills.setAmountDrUsd(amountDrUsd);
|
|
|
+ bills.setAmountCrUsd(amountCrUsd);
|
|
|
+ bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
+ bills.setAmountDrLoc(amountDrLoc);
|
|
|
+ bills.setAmountCrLoc(amountCrLoc);
|
|
|
+ bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
+ bills.setMasterBillNo("");
|
|
|
+ bills.setMasterId(0L);
|
|
|
+ bills.setQuantity(quantity);
|
|
|
+ bills.setGrossWeight(grossWeight);
|
|
|
+ bills.setMeasurement(measurement);
|
|
|
+ baseMapper.updateById(bills);
|
|
|
+ }
|
|
|
+ return R.data("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void removeIds(List<Long> ids) {
|
|
|
+ List<AeaBills> billsList = baseMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
+ .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AeaBills::getIsDeleted, 0)
|
|
|
+ .in(AeaBills::getId, ids));
|
|
|
+ for (AeaBills item : billsList) {
|
|
|
+ if (baseMapper.selectCount(new LambdaQueryWrapper<AeaBills>()
|
|
|
+ .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AeaBills::getIsDeleted, 0)
|
|
|
+ .eq(AeaBills::getMasterId, item.getId())) > 0) {
|
|
|
+ throw new RuntimeException("该主单存在分单,请先撤销分单");
|
|
|
+ }
|
|
|
+ businessBillNoService.deteleBillNoAe(item);
|
|
|
+ }
|
|
|
+ baseMapper.deleteBatchIds(ids);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AeaBills checkBills(AeaBills bills) {
|
|
|
+ AeaBills declare = baseMapper.selectById(bills.getId());
|
|
|
+ Integer actId = null;
|
|
|
+ String processType = "";
|
|
|
+ String checkType = "";
|
|
|
+ if ("AE".equals(declare.getBusinessType())) {
|
|
|
+ actId = 1115;
|
|
|
+ processType = "空运出口审核";
|
|
|
+ checkType = "KYCK-DJ";
|
|
|
+ } else if ("AI".equals(declare.getBusinessType())) {
|
|
|
+ actId = 1114;
|
|
|
+ processType = "空运进口审核";
|
|
|
+ checkType = "KYJK-DJ";
|
|
|
+ }
|
|
|
+ //审批数据
|
|
|
+ LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();
|
|
|
+ //获取审批级次
|
|
|
+ List<LosAuditPathsLevels> auditPathsLevels = null;
|
|
|
+ // 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
|
|
|
+ LosAuditPathsActs pathsActs = null;
|
|
|
+ //是否开启流程
|
|
|
+ LambdaQueryWrapper<LosAuditPathsActs> auditPathsActsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ auditPathsActsLambdaQueryWrapper
|
|
|
+ .eq(LosAuditPathsActs::getIsEnable, 1)
|
|
|
+ .eq(LosAuditPathsActs::getFidStatus, "status")
|
|
|
+ .eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
|
|
|
+ .eq(LosAuditPathsActs::getActId, actId);
|
|
|
+ pathsActs = auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
|
|
|
+ //获取审批信息
|
|
|
+ LosAuditPathsActs losAuditPathsActs = auditPathsActsService.getOne(new LambdaQueryWrapper<LosAuditPathsActs>()
|
|
|
+ .eq(LosAuditPathsActs::getActId, actId)
|
|
|
+ .eq(LosAuditPathsActs::getFidStatus, "status")
|
|
|
+ .eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
|
|
|
+ .eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId()));
|
|
|
+ Long pathId = losAuditPathsActs.getPathId();
|
|
|
+ auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()
|
|
|
+ .eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()).eq(LosAuditPathsLevels::getPathId, pathId));
|
|
|
+ auditProecessDTO.setTimes(1);
|
|
|
+ auditProecessDTO.setProcessType(processType);
|
|
|
+
|
|
|
+ // 没开启审批流直接走 通过流程
|
|
|
+ if (pathsActs == null || pathsActs.getIsEnable() == 2) {
|
|
|
+ throw new SecurityException("当前租户未查询到审批流配置");
|
|
|
+ } else {
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(auditPathsLevels)) {
|
|
|
+ throw new SecurityException("开启审批失败:未查询到审批信息");
|
|
|
+ }
|
|
|
+ // 绑定审核类型
|
|
|
+ auditProecessDTO.setCheckType(checkType);
|
|
|
+ // 追加跳转路由url
|
|
|
+ auditProecessDTO.setUrl(bills.getUrl());
|
|
|
+ auditProecessDTO.setPageStatus(bills.getPageStatus());
|
|
|
+ auditProecessDTO.setPageLabel(bills.getPageLabel());
|
|
|
+ auditProecessDTO.setOrderRemark(declare.getRemarks());
|
|
|
+ auditProecessDTO.setPathsLevelsList(auditPathsLevels);
|
|
|
+ auditProecessDTO.setActId(1);
|
|
|
+ auditProecessDTO.setSrcBillId(declare.getId());
|
|
|
+ auditProecessDTO.setBillId(declare.getId());
|
|
|
+ auditProecessDTO.setBillNo(declare.getBillNo());
|
|
|
+ auditProecessDTO.setSendUserId(AuthUtil.getUserId());
|
|
|
+ auditProecessDTO.setSendName(AuthUtil.getUserName());
|
|
|
+ auditProecessDTO.setSendTime(new Date());
|
|
|
+ auditProecessDTO.setBillTime(declare.getCreateTime());
|
|
|
+ auditProecessDTO.setTenantId(AuthUtil.getTenantId());
|
|
|
+ auditProecessDTO.setCorpId(declare.getCorpId());
|
|
|
+ auditProecessDTO.setSalesCompanyId(Long.parseLong(declare.getCreateDept()));
|
|
|
+ auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
|
|
|
+ auditProecessDTO.setPayAmount(declare.getAmountCrLoc());
|
|
|
+ auditProecessDTO.setReceivableAmount(declare.getAmountDrLoc());
|
|
|
+ auditProecessDTO.setGrossProfit(declare.getAmountProfitLoc());
|
|
|
+ auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
|
|
|
+ R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
|
|
|
+ if (!financeProcess.isSuccess()) {
|
|
|
+ throw new SecurityException("操作失败,请联系管理员");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ declare.setStatus(1);
|
|
|
+ baseMapper.updateById(declare);
|
|
|
+ return declare;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AeaBills revokeCheckOrder(AeaBills bills) {
|
|
|
+ AeaBills declare = baseMapper.selectById(bills.getId());
|
|
|
+ if (3 == declare.getStatus()) {
|
|
|
+ throw new SecurityException("审核已通过,撤销失败");
|
|
|
+ }
|
|
|
+ R financeProcess = auditProecessService.deteleByBillId(bills.getId());
|
|
|
+ if (!financeProcess.isSuccess()) {
|
|
|
+ throw new SecurityException("操作失败,请联系管理员");
|
|
|
+ }
|
|
|
+ declare.setStatus(0);
|
|
|
+ baseMapper.updateById(declare);
|
|
|
+ return declare;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R passCheck(Long id) {
|
|
|
+ AeaBills bills = baseMapper.selectById(id);
|
|
|
+ if (bills == null) {
|
|
|
+ throw new SecurityException("审批通过失败");
|
|
|
+ }
|
|
|
+ bills.setStatus(3);
|
|
|
+ bills.setBillStatus(2);
|
|
|
+ baseMapper.updateById(bills);
|
|
|
+ List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
+ feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getAccStatus, 0)
|
|
|
+ .eq(FeeCenter::getPid, bills.getId()));
|
|
|
+ if ("MM".equals(bills.getBillType())) {
|
|
|
+ List<AeaBills> billsList = baseMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
+ .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AeaBills::getIsDeleted, 0)
|
|
|
+ .eq(AeaBills::getMasterId, bills.getId())
|
|
|
+ .eq(AeaBills::getMasterBillNo, bills.getMasterBillNo()));
|
|
|
+ if (billsList.size() > 0) {
|
|
|
+ List<Long> ids = billsList.stream().map(AeaBills::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ if (ids.size() > 0) {
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getAccStatus, 0)
|
|
|
+ .in(FeeCenter::getPid, ids));
|
|
|
+ feeCenterList.addAll(feeCenters);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (FeeCenter item : feeCenterList) {
|
|
|
+ item.setApproverId(AuthUtil.getUserId());
|
|
|
+ item.setApproverName(AuthUtil.getUserName());
|
|
|
+ item.setApproveTime(new Date());
|
|
|
+ }
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
+ if (feeCenterList.size() != 0) {
|
|
|
+ FinAccBills finAccBills = new FinAccBills();
|
|
|
+ finAccBills.setFeeCenterList(feeCenterList);
|
|
|
+ finAccBills.setBusinessTypeCode("HYZD");
|
|
|
+ finAccBills.setBillNoFormat("HYZD");
|
|
|
+ finAccBills.setAccountType("");
|
|
|
+ finAccBills.setRefno(bills.getRefno());
|
|
|
+ finAccBillsService.generateBill(finAccBills);
|
|
|
+ }
|
|
|
+ return R.success("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R underReview(Long id) {
|
|
|
+ AeaBills bills = baseMapper.selectById(id);
|
|
|
+ if (bills == null) {
|
|
|
+ throw new SecurityException("审批通过失败");
|
|
|
+ }
|
|
|
+ bills.setStatus(2);
|
|
|
+ baseMapper.updateById(bills);
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getPid, bills.getId()));
|
|
|
+ for (FeeCenter item : feeCenterList) {
|
|
|
+ item.setApproverId(AuthUtil.getUserId());
|
|
|
+ item.setApproverName(AuthUtil.getUserName());
|
|
|
+ item.setApproveTime(new Date());
|
|
|
+ }
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
+ return R.success("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R passCancel(Long id) {
|
|
|
+ AeaBills bills = baseMapper.selectById(id);
|
|
|
+ if (bills == null) {
|
|
|
+ throw new SecurityException("审批通过失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ bills.setStatus(4);
|
|
|
+ baseMapper.updateById(bills);
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getPid, bills.getId()));
|
|
|
+ for (FeeCenter item : feeCenterList) {
|
|
|
+ item.setApproverId(AuthUtil.getUserId());
|
|
|
+ item.setApproverName(AuthUtil.getUserName());
|
|
|
+ item.setApproveTime(new Date());
|
|
|
+ }
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterList);
|
|
|
+ return R.success("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AeaBills copyBills(AeaBills bills) {
|
|
|
+ if (bills.getId() == null) {
|
|
|
+ throw new SecurityException("缺少必要参数");
|
|
|
+ }
|
|
|
+ AeaBills detail = baseMapper.selectById(bills.getId());
|
|
|
+ List<FilesCenter> filesList = filesCenterService.list(new LambdaQueryWrapper<FilesCenter>()
|
|
|
+ .eq(FilesCenter::getIsDeleted, 0)
|
|
|
+ .eq(FilesCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FilesCenter::getPid, detail.getId()));
|
|
|
+ for (FilesCenter item : filesList) {
|
|
|
+ item.setPid(null);
|
|
|
+ item.setId(null);
|
|
|
+ item.setItemId(null);
|
|
|
+ item.setBillNo("");
|
|
|
+ item.setBusinessType(null);
|
|
|
+ item.setHblno("");
|
|
|
+ item.setMblno("");
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListC = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getBillType, detail.getBillType())
|
|
|
+ .eq(FeeCenter::getPid, detail.getId())
|
|
|
+ .eq(FeeCenter::getDc, "C")
|
|
|
+ .eq(FeeCenter::getBillNo, detail.getBillNo())
|
|
|
+ );
|
|
|
+ for (FeeCenter item : feeCenterListC) {
|
|
|
+ item.setPid(null);
|
|
|
+ item.setId(null);
|
|
|
+ item.setBusinessType(null);
|
|
|
+ item.setBillType(null);
|
|
|
+ item.setBillNo("");
|
|
|
+ item.setBillDate(null);
|
|
|
+ item.setAccountDate(null);
|
|
|
+ item.setMblno("");
|
|
|
+ item.setHblno("");
|
|
|
+ item.setAccountDate(null);
|
|
|
+ item.setAccBillId(null);
|
|
|
+ item.setAccBillNo("");
|
|
|
+ item.setAccDate(null);
|
|
|
+ item.setAccStatus(0);
|
|
|
+ item.setAccById(0L);
|
|
|
+ item.setAccByName("");
|
|
|
+ item.setCheckBillId(0L);
|
|
|
+ item.setCheckBillNo("");
|
|
|
+ item.setCheckDate(null);
|
|
|
+ item.setCheckAmount(new BigDecimal("0.00"));
|
|
|
+ item.setCheckStatus(0);
|
|
|
+ item.setCheckById(0L);
|
|
|
+ item.setCheckByName("");
|
|
|
+ item.setStlBillId(0L);
|
|
|
+ item.setStlBillNo("");
|
|
|
+ item.setStlDate(null);
|
|
|
+ item.setStlOrgAmount(new BigDecimal("0.00"));
|
|
|
+ item.setStlCurCode("");
|
|
|
+ item.setStlExrate(new BigDecimal("0.00"));
|
|
|
+ item.setStlExrateLoc(new BigDecimal("0.00"));
|
|
|
+ item.setStlAmount(new BigDecimal("0.00"));
|
|
|
+ item.setStlAmountLoc(new BigDecimal("0.00"));
|
|
|
+ item.setStlStatus(0);
|
|
|
+ item.setStlById(0L);
|
|
|
+ item.setStlByName("");
|
|
|
+ item.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
+ item.setUnsettledAmount(item.getAmount());
|
|
|
+ item.setVoucherBillId(0L);
|
|
|
+ item.setVoucherBillNo("");
|
|
|
+ item.setVoucherNo("");
|
|
|
+ item.setVoucherDate(null);
|
|
|
+ item.setVoucherStatus(0);
|
|
|
+ item.setVoucherById(0L);
|
|
|
+ item.setVoucherByName("");
|
|
|
+ item.setInvoiceBillId("");
|
|
|
+ item.setInvoiceBillNo("");
|
|
|
+ item.setInvoiceNo("");
|
|
|
+ item.setInvoiceDate(null);
|
|
|
+ item.setInvoiceStatus(0);
|
|
|
+ item.setInvoiceCurCode("");
|
|
|
+ item.setInvoiceExrate(new BigDecimal("0.00"));
|
|
|
+ item.setInvoiceAmount(new BigDecimal("0.00"));
|
|
|
+ item.setInvoiceAmountLoc(new BigDecimal("0.00"));
|
|
|
+ item.setUninvoicedAmount(new BigDecimal("0.00"));
|
|
|
+ item.setAppliedAmount(new BigDecimal("0.00"));
|
|
|
+ item.setAppliedInvoiceAmount(new BigDecimal("0.00"));
|
|
|
+ item.setReconciliationAmount(new BigDecimal("0.00"));
|
|
|
+ item.setInvoiceById(0L);
|
|
|
+ item.setInvoiceByName("");
|
|
|
+ item.setIsSignfor(0);
|
|
|
+ item.setSignforId(0);
|
|
|
+ item.setSignforName("");
|
|
|
+ item.setSignforDate(null);
|
|
|
+ item.setApplyId(0L);
|
|
|
+ item.setApplyName("");
|
|
|
+ item.setApplyTime(null);
|
|
|
+ item.setApproverId(0L);
|
|
|
+ item.setApproverName("");
|
|
|
+ item.setApproveTime(null);
|
|
|
+ item.setAuditStatus("0");
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListD = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getBillType, detail.getBillType())
|
|
|
+ .eq(FeeCenter::getPid, detail.getId())
|
|
|
+ .eq(FeeCenter::getDc, "D")
|
|
|
+ .eq(FeeCenter::getBillNo, detail.getBillNo())
|
|
|
+ );
|
|
|
+ for (FeeCenter item : feeCenterListD) {
|
|
|
+ item.setPid(null);
|
|
|
+ item.setId(null);
|
|
|
+ item.setBusinessType(null);
|
|
|
+ item.setBillType(null);
|
|
|
+ item.setBillNo("");
|
|
|
+ item.setBillDate(null);
|
|
|
+ item.setAccountDate(null);
|
|
|
+ item.setMblno("");
|
|
|
+ item.setHblno("");
|
|
|
+ item.setAccountDate(null);
|
|
|
+ item.setAccBillId(null);
|
|
|
+ item.setAccBillNo("");
|
|
|
+ item.setAccDate(null);
|
|
|
+ item.setAccStatus(0);
|
|
|
+ item.setAccById(0L);
|
|
|
+ item.setAccByName("");
|
|
|
+ item.setCheckBillId(0L);
|
|
|
+ item.setCheckBillNo("");
|
|
|
+ item.setCheckDate(null);
|
|
|
+ item.setCheckAmount(new BigDecimal("0.00"));
|
|
|
+ item.setCheckStatus(0);
|
|
|
+ item.setCheckById(0L);
|
|
|
+ item.setCheckByName("");
|
|
|
+ item.setStlBillId(0L);
|
|
|
+ item.setStlBillNo("");
|
|
|
+ item.setStlDate(null);
|
|
|
+ item.setStlOrgAmount(new BigDecimal("0.00"));
|
|
|
+ item.setStlCurCode("");
|
|
|
+ item.setStlExrate(new BigDecimal("0.00"));
|
|
|
+ item.setStlExrateLoc(new BigDecimal("0.00"));
|
|
|
+ item.setStlAmount(new BigDecimal("0.00"));
|
|
|
+ item.setStlAmountLoc(new BigDecimal("0.00"));
|
|
|
+ item.setStlStatus(0);
|
|
|
+ item.setStlById(0L);
|
|
|
+ item.setStlByName("");
|
|
|
+ item.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
+ item.setUnsettledAmount(item.getAmount());
|
|
|
+ item.setVoucherBillId(0L);
|
|
|
+ item.setVoucherBillNo("");
|
|
|
+ item.setVoucherNo("");
|
|
|
+ item.setVoucherDate(null);
|
|
|
+ item.setVoucherStatus(0);
|
|
|
+ item.setVoucherById(0L);
|
|
|
+ item.setVoucherByName("");
|
|
|
+ item.setInvoiceBillId("");
|
|
|
+ item.setInvoiceBillNo("");
|
|
|
+ item.setInvoiceNo("");
|
|
|
+ item.setInvoiceDate(null);
|
|
|
+ item.setInvoiceStatus(0);
|
|
|
+ item.setInvoiceCurCode("");
|
|
|
+ item.setInvoiceExrate(new BigDecimal("0.00"));
|
|
|
+ item.setInvoiceAmount(new BigDecimal("0.00"));
|
|
|
+ item.setInvoiceAmountLoc(new BigDecimal("0.00"));
|
|
|
+ item.setUninvoicedAmount(new BigDecimal("0.00"));
|
|
|
+ item.setAppliedAmount(new BigDecimal("0.00"));
|
|
|
+ item.setAppliedInvoiceAmount(new BigDecimal("0.00"));
|
|
|
+ item.setReconciliationAmount(new BigDecimal("0.00"));
|
|
|
+ item.setInvoiceById(0L);
|
|
|
+ item.setInvoiceByName("");
|
|
|
+ item.setIsSignfor(0);
|
|
|
+ item.setSignforId(0);
|
|
|
+ item.setSignforName("");
|
|
|
+ item.setSignforDate(null);
|
|
|
+ item.setApplyId(0L);
|
|
|
+ item.setApplyName("");
|
|
|
+ item.setApplyTime(null);
|
|
|
+ item.setApproverId(0L);
|
|
|
+ item.setApproverName("");
|
|
|
+ item.setApproveTime(null);
|
|
|
+ item.setAuditStatus("0");
|
|
|
+ }
|
|
|
+ AeaBills copyBills = new AeaBills();
|
|
|
+ BeanUtil.copyProperties(detail, copyBills);
|
|
|
+ copyBills.setId(null);
|
|
|
+ copyBills.setBillNo("");
|
|
|
+ copyBills.setMblno("");
|
|
|
+ copyBills.setHblno("");
|
|
|
+ copyBills.setRefno("");
|
|
|
+ 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.setFeeCenterListC(feeCenterListC);
|
|
|
+ copyBills.setFeeCenterListD(feeCenterListD);
|
|
|
+ copyBills.setQuantity(new BigDecimal("0.00"));
|
|
|
+ copyBills.setGrossWeight(new BigDecimal("0.00"));
|
|
|
+ copyBills.setMeasurement(new BigDecimal("0.00"));
|
|
|
+ copyBills.setLength(new BigDecimal("0.00"));
|
|
|
+ copyBills.setWidth(new BigDecimal("0.00"));
|
|
|
+ copyBills.setHeight(new BigDecimal("0.00"));
|
|
|
+ copyBills.setFilesList(filesList);
|
|
|
+ return copyBills;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R disembarking(String ids) {
|
|
|
+ List<AeaBills> billsList = baseMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
+ .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AeaBills::getIsDeleted, 0)
|
|
|
+ .in(AeaBills::getId, ids));
|
|
|
+ for (AeaBills item : billsList) {
|
|
|
+ if (item.getBillStatus() == 1) {
|
|
|
+ throw new RuntimeException("已退舱,请勿重复操作");
|
|
|
+ }
|
|
|
+ if (item.getBillStatus() == 3) {
|
|
|
+ throw new RuntimeException("单据已完成,退舱失败");
|
|
|
+ }
|
|
|
+ item.setBillStatus(1);
|
|
|
+ }
|
|
|
+ this.updateBatchById(billsList);
|
|
|
+ return R.data("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R revokeDisembarking(String ids) {
|
|
|
+ List<AeaBills> billsList = baseMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
+ .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AeaBills::getIsDeleted, 0)
|
|
|
+ .in(AeaBills::getId, ids));
|
|
|
+ for (AeaBills item : billsList) {
|
|
|
+ if (item.getBillStatus() == 0) {
|
|
|
+ throw new RuntimeException("已取消退舱,请勿重复操作");
|
|
|
+ }
|
|
|
+ if (item.getBillStatus() == 3) {
|
|
|
+ throw new RuntimeException("单据已完成,取消退舱失败");
|
|
|
+ }
|
|
|
+ item.setBillStatus(0);
|
|
|
+ }
|
|
|
+ this.updateBatchById(billsList);
|
|
|
+ return R.data("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
}
|