|
|
@@ -27,6 +27,7 @@ import org.springblade.client.entity.Message;
|
|
|
import org.springblade.client.feign.IMessageClient;
|
|
|
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.StringUtil;
|
|
|
import org.springblade.los.Util.CurrencyUtils;
|
|
|
import org.springblade.los.basic.business.entity.BusinessType;
|
|
|
@@ -52,6 +53,7 @@ import org.springblade.los.business.sea.entity.*;
|
|
|
import org.springblade.los.business.sea.mapper.BillsMapper;
|
|
|
import org.springblade.los.business.sea.mapper.DeadlineMapper;
|
|
|
import org.springblade.los.business.sea.mapper.SeaBillsDetailMapper;
|
|
|
+import org.springblade.los.business.sea.mapper.SeaFeedayMapper;
|
|
|
import org.springblade.los.business.sea.service.IContainersService;
|
|
|
import org.springblade.los.business.sea.service.IDeadlineContainersService;
|
|
|
import org.springblade.los.check.dto.LosAuditProecessDTO;
|
|
|
@@ -66,6 +68,7 @@ import org.springblade.los.finance.fee.entity.FeeCenter;
|
|
|
import org.springblade.los.finance.fee.entity.FeeCenterUpdateRecord;
|
|
|
import org.springblade.los.finance.fee.entity.FinAccBills;
|
|
|
import org.springblade.los.finance.fee.mapper.FeeCenterUpdateRecordMapper;
|
|
|
+import org.springblade.los.finance.fee.service.ICostProfitCalculationService;
|
|
|
import org.springblade.los.finance.fee.service.IFeeCenterService;
|
|
|
import org.springblade.los.finance.fee.service.IFinAccBillsService;
|
|
|
import org.springblade.los.finance.invoices.entity.FinInvoices;
|
|
|
@@ -104,6 +107,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
|
|
|
private final DeadlineMapper deadlineMapper;
|
|
|
|
|
|
+ private final SeaFeedayMapper seaFeedayMapper;
|
|
|
+
|
|
|
private final FinStlBillsMapper finStlBillsMapper;
|
|
|
|
|
|
private final FinInvoicesMapper finInvoicesMapper;
|
|
|
@@ -142,6 +147,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
|
|
|
private final IDeadlineContainersService deadlineContainersService;
|
|
|
|
|
|
+ private final ICostProfitCalculationService costProfitCalculationService;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public IPage<LosAuditProecessVO> selectAuditProecessPage(IPage<LosAuditProecessVO> page, LosAuditProecessVO auditProecess) {
|
|
|
@@ -182,6 +189,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
auditProecess.setSrcBillId(auditProecessDTO.getSrcBillId());
|
|
|
auditProecess.setPathId(e.getPathId());
|
|
|
auditProecess.setCorpId(auditProecessDTO.getCorpId());
|
|
|
+ auditProecess.setCorpsName(auditProecessDTO.getCorpsName());
|
|
|
auditProecess.setLevelId(e.getLevelId());
|
|
|
auditProecess.setProcessType(auditProecessDTO.getProcessType());
|
|
|
auditProecess.setPageLabel(auditProecessDTO.getPageLabel());
|
|
|
@@ -204,6 +212,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
auditProecess.setSalesCompanyId(auditProecessDTO.getSalesCompanyId());
|
|
|
auditProecess.setSalesCompanyName(auditProecessDTO.getSalesCompanyName());
|
|
|
|
|
|
+ auditProecess.setAmount(auditProecessDTO.getAmount());
|
|
|
auditProecess.setPayAmount(auditProecessDTO.getPayAmount());
|
|
|
auditProecess.setReceivableAmount(auditProecessDTO.getReceivableAmount());
|
|
|
auditProecess.setGrossProfit(auditProecessDTO.getGrossProfit());
|
|
|
@@ -298,6 +307,10 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
message.setMessageBody("您有新的提单修改审核待确认,业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
|
|
|
+ "提交人:" + auditProecessDTO.getSendName() + " " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
|
|
|
);
|
|
|
+ } else if ("免箱使天数申请".equals(auditProecess.getProcessType())) {
|
|
|
+ message.setMessageBody("您有新的免箱使天数申请待确认,业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
|
|
|
+ + "提交人:" + auditProecessDTO.getSendName() + " " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
message.setUrl("/approveDataH/index");
|
|
|
@@ -1845,6 +1858,548 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
this.checkTradingBox(proecessTemp);
|
|
|
} else if ("TDXG".equals(proecessTemp.getCheckType())) {
|
|
|
this.checkDeadline(proecessTemp);
|
|
|
+ } else if ("FEEDAY".equals(proecessTemp.getCheckType())) {
|
|
|
+ this.checkSeaFeeday(proecessTemp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void checkSeaFeeday(LosAuditProecess proecessTemp) {
|
|
|
+ String messageBody = "";
|
|
|
+ int type = 1;
|
|
|
+ String billsDate = "";
|
|
|
+ //用户操作 1.通过 2.驳回
|
|
|
+ Integer operate = proecessTemp.getOperate();
|
|
|
+ //查看当前审批是否为最后一级
|
|
|
+ String iffinalItem = proecessTemp.getIffinalItem();
|
|
|
+ SeaFeeday seaFeeday = seaFeedayMapper.selectById(proecessTemp.getBillId());
|
|
|
+ //不是最后一级
|
|
|
+ if ("F".equals(iffinalItem)) {
|
|
|
+ //通过
|
|
|
+ if (operate == 1) {
|
|
|
+ //如果是第一级, 则修改状态为审批中
|
|
|
+ if (proecessTemp.getLevelId() == 1) {
|
|
|
+ if (seaFeeday == null) {
|
|
|
+ throw new SecurityException("审批通过失败");
|
|
|
+ }
|
|
|
+ seaFeeday.setStatus("审核中");
|
|
|
+ seaFeeday.setUpdateTime(new Date());
|
|
|
+ seaFeeday.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ seaFeeday.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ seaFeedayMapper.updateById(seaFeeday);
|
|
|
+ }
|
|
|
+ proecessTemp.setAuditStatus("A");
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
|
|
|
+ //获得订单创建日期
|
|
|
+ if (proecessTemp.getBillId() != null) {
|
|
|
+ if (seaFeeday != null) {
|
|
|
+ billsDate = simpleDateFormat.format(seaFeeday.getCreateTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ messageBody = "您有新的免箱使天数申请,业务单号:" + proecessTemp.getBillNo() + ","
|
|
|
+ + "单据日期:" + billsDate + ",请审核。"
|
|
|
+ + "提交人:" + proecessTemp.getSendName() + " " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime());
|
|
|
+ type = 2;
|
|
|
+ }
|
|
|
+ //不通过
|
|
|
+ else if (operate == 2) {
|
|
|
+ proecessTemp.setAuditStatus("B");
|
|
|
+ if (seaFeeday == null) {
|
|
|
+ throw new SecurityException("审批通过失败");
|
|
|
+ }
|
|
|
+ seaFeeday.setStatus("审核驳回");
|
|
|
+ seaFeedayMapper.updateById(seaFeeday);
|
|
|
+ messageBody = "您的免箱使天数申请未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + proecessTemp.getAuditMsg();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //是最后一级
|
|
|
+ else if ("T".equals(iffinalItem)) {
|
|
|
+ //通过
|
|
|
+ if (operate == 1) {
|
|
|
+ proecessTemp.setAuditStatus("A");
|
|
|
+ if (seaFeeday == null) {
|
|
|
+ throw new SecurityException("审批通过失败");
|
|
|
+ }
|
|
|
+ seaFeeday.setStatus("审核通过");
|
|
|
+ seaFeedayMapper.updateById(seaFeeday);
|
|
|
+ Bills bills = billsMapper.selectById(seaFeeday.getPid());
|
|
|
+ if (bills == null) {
|
|
|
+ throw new RuntimeException("未查到对应海运单据信息");
|
|
|
+ }
|
|
|
+ //数据处理
|
|
|
+ this.processSeaFeeday(bills, seaFeeday);
|
|
|
+ messageBody = "您的免箱使天数申请已通过" + ",业务单号:" + proecessTemp.getBillNo();
|
|
|
+ }
|
|
|
+ //不通过
|
|
|
+ else if (operate == 2) {
|
|
|
+ proecessTemp.setAuditStatus("B");
|
|
|
+ if (seaFeeday == null) {
|
|
|
+ throw new SecurityException("审批通过失败");
|
|
|
+ }
|
|
|
+ seaFeeday.setStatus("审核驳回");
|
|
|
+ seaFeedayMapper.updateById(seaFeeday);
|
|
|
+ messageBody = "您的免箱使天数申请未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + proecessTemp.getAuditMsg();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new SecurityException("审批异常,请联系管理员");
|
|
|
+ }
|
|
|
+ //发送消息
|
|
|
+ this.sendMessage(messageBody, proecessTemp, type, billsDate);
|
|
|
+ cleanMsg(proecessTemp.getAuditUserId(), AuthUtil.getUserId(), proecessTemp.getSrcBillId());
|
|
|
+ baseMapper.updateById(proecessTemp);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void processSeaFeeday(Bills bills, SeaFeeday seaFeeday) {
|
|
|
+ if ("pod".equals(seaFeeday.getType())) {
|
|
|
+ bills.setPodFreeBoxUseDays(bills.getPodFreeBoxUseDays() + seaFeeday.getApplyDays());
|
|
|
+ bills.setUpdateTime(new Date());
|
|
|
+ bills.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ bills.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ int version = StringUtil.isBlank(bills.getVersion()) ? 1 : Integer.parseInt(bills.getVersion());
|
|
|
+ bills.setVersion(String.valueOf(version + 1));
|
|
|
+ if (new BigDecimal("0.00").compareTo(seaFeeday.getApplyAmount()) != 0){
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getPid, bills.getId()));
|
|
|
+ List<FeeCenter> feeCenterListMM = new ArrayList<>();
|
|
|
+ Bills billsMM = null;
|
|
|
+ if ("MH".equals(bills.getBillType())) {
|
|
|
+ billsMM = billsMapper.selectById(bills.getMasterId());
|
|
|
+ if (billsMM != null) {
|
|
|
+ feeCenterListMM = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getPid, billsMM.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //超期箱使费
|
|
|
+ BFees fees = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
|
|
|
+ .eq(BFees::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BFees::getIsDeleted, 0)
|
|
|
+ .eq(BFees::getCode, "CQXSF"));
|
|
|
+ if (fees == null) {
|
|
|
+ throw new RuntimeException("请先维护超期箱使费费用基础信息");
|
|
|
+ }
|
|
|
+ BCorps bCorps = bCorpsService.getOne(new LambdaQueryWrapper<BCorps>()
|
|
|
+ .eq(BCorps::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BCorps::getIsDeleted, 0)
|
|
|
+ .eq(BCorps::getCode, "ZBYF"));
|
|
|
+ if (bCorps == null) {
|
|
|
+ throw new RuntimeException("基础资料未查到编码为‘ZBYF’往来单位");
|
|
|
+ }
|
|
|
+ FeeCenter feeCenter = new FeeCenter();
|
|
|
+ feeCenter.setBillType(bills.getBillType());
|
|
|
+ feeCenter.setCorpType("国内同行及代理");
|
|
|
+ feeCenter.setCorpId(bills.getCorpId());
|
|
|
+ feeCenter.setCorpCnName(bills.getCorpCnName());
|
|
|
+ feeCenter.setCorpEnName(bills.getCorpEnName());
|
|
|
+ feeCenter.setShortName(bills.getShortName());
|
|
|
+ feeCenter.setCreateTime(new Date());
|
|
|
+ feeCenter.setCreateUser(bills.getOperatorId());
|
|
|
+ feeCenter.setCreateUserName(bills.getOperatorName());
|
|
|
+ feeCenter.setPaymode(bills.getMpaymode());
|
|
|
+ feeCenter.setPid(bills.getId());
|
|
|
+ feeCenter.setDc("D");
|
|
|
+ feeCenter.setFeeId(fees.getId());
|
|
|
+ feeCenter.setFeeCode(fees.getCode());
|
|
|
+ feeCenter.setFeeCnName(fees.getCnName());
|
|
|
+ feeCenter.setFeeEnName(fees.getEnName());
|
|
|
+ feeCenter.setCurCode(seaFeeday.getCurCode());
|
|
|
+ feeCenter.setUnitNo("JOB");
|
|
|
+ feeCenter.setExrate(seaFeeday.getExrate());
|
|
|
+ feeCenter.setAmount(seaFeeday.getApplyAmount());
|
|
|
+ feeCenter.setAmountLoc(seaFeeday.getApplyAmount().multiply(feeCenter.getExrate()));
|
|
|
+ feeCenter.setUnsettledAmount(seaFeeday.getApplyAmount());
|
|
|
+ feeCenter.setPrice(seaFeeday.getApplyAmount());
|
|
|
+ feeCenter.setRemarks("超期箱使费-购买天数");
|
|
|
+ feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
+ feeCenter.setBillNo(bills.getBillNo());
|
|
|
+ feeCenter.setBusinessType(bills.getBusinessType());
|
|
|
+ feeCenter.setBillDate(bills.getBillDate());
|
|
|
+ feeCenter.setBillCorpId(bills.getCorpId());
|
|
|
+ feeCenter.setBillCorpCnName(bills.getCorpCnName());
|
|
|
+ feeCenter.setBillCorpEnName(bills.getCorpEnName());
|
|
|
+ feeCenter.setBillShortName(bills.getCorpShortName());
|
|
|
+ feeCenter.setMblno(bills.getMblno());
|
|
|
+ feeCenter.setHblno(bills.getHblno());
|
|
|
+ feeCenter.setPolId(bills.getPolId());
|
|
|
+ feeCenter.setPolCode(bills.getPolCode());
|
|
|
+ feeCenter.setPolCnName(bills.getPolCnName());
|
|
|
+ feeCenter.setPolEnName(bills.getPolEnName());
|
|
|
+ feeCenter.setAutomaticGenerated("1");
|
|
|
+ feeCenter.setBranchId(bills.getBranchId());
|
|
|
+ feeCenter.setBranchName(bills.getBranchName());
|
|
|
+ feeCenter.setBillBranchId(bills.getBranchId());
|
|
|
+ feeCenter.setBillBranchName(bills.getBranchName());
|
|
|
+ feeCenter.setVersion("1");
|
|
|
+ feeCenterService.save(feeCenter);
|
|
|
+ FeeCenter feeCenterC = new FeeCenter();
|
|
|
+ BeanUtil.copyProperties(feeCenter, feeCenterC);
|
|
|
+ feeCenterC.setId(null);
|
|
|
+ feeCenterC.setPid(bills.getId());
|
|
|
+ feeCenterC.setDc("C");
|
|
|
+ feeCenterC.setCorpType("国内直接客户");
|
|
|
+ feeCenterC.setCorpId(bCorps.getId());
|
|
|
+ feeCenterC.setCorpCnName(bCorps.getCnName());
|
|
|
+ feeCenterC.setCorpEnName(bCorps.getEnName());
|
|
|
+ feeCenterC.setShortName(bCorps.getShortName());
|
|
|
+ feeCenterService.save(feeCenterC);
|
|
|
+ BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
|
|
|
+ .eq(BusinessType::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BusinessType::getIsDeleted, 0)
|
|
|
+ .eq(BusinessType::getStatus, 0)
|
|
|
+ .eq(BusinessType::getCode, "HYZD"));
|
|
|
+ if (businessType == null) {
|
|
|
+ throw new RuntimeException("未找到账单业务编号规则");
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenterListAcc = new ArrayList<>();
|
|
|
+ if ("MH".equals(bills.getBillType()) && billsMM != null) {
|
|
|
+ String exrateType = currencyUtils.standardCurrency(billsMM.getBranchId());
|
|
|
+ FeeCenter feeCenterDMM = new FeeCenter();
|
|
|
+ feeCenterDMM.setBookingAgentId(billsMM.getBookingAgentId());
|
|
|
+ feeCenterDMM.setBookingAgentCnName(billsMM.getBookingAgentCnName());
|
|
|
+ feeCenterDMM.setBookingAgentEnName(billsMM.getBookingAgentEnName());
|
|
|
+ feeCenterDMM.setQuantityCntrDescr(billsMM.getQuantityCntrDescr());
|
|
|
+ feeCenterDMM.setBillBranchId(billsMM.getBranchId());
|
|
|
+ feeCenterDMM.setBillBranchName(billsMM.getBranchName());
|
|
|
+ feeCenterDMM.setTeu(billsMM.getTeu());
|
|
|
+ feeCenterDMM.setBranchId(billsMM.getBranchId());
|
|
|
+ feeCenterDMM.setBranchName(billsMM.getBranchName());
|
|
|
+ feeCenterDMM.setPid(billsMM.getId());
|
|
|
+ feeCenterDMM.setCntrNo(billsMM.getQuantityCntrTypesDescr());
|
|
|
+ feeCenterDMM.setBillNo(billsMM.getBillNo());
|
|
|
+ feeCenterDMM.setBusinessType(billsMM.getBusinessType());
|
|
|
+ feeCenterDMM.setBillType(billsMM.getBillType());
|
|
|
+ feeCenterDMM.setBillDate(billsMM.getBillDate());
|
|
|
+ feeCenterDMM.setBillCorpId(billsMM.getCorpId());
|
|
|
+ feeCenterDMM.setBillCorpCnName(billsMM.getCorpCnName());
|
|
|
+ feeCenterDMM.setBillCorpEnName(billsMM.getCorpEnName());
|
|
|
+ feeCenterDMM.setBillShortName(billsMM.getShortName());
|
|
|
+ feeCenterDMM.setLineId(billsMM.getLineId());
|
|
|
+ feeCenterDMM.setLineCnName(billsMM.getLineCnName());
|
|
|
+ feeCenterDMM.setLineEnName(billsMM.getLineEnName());
|
|
|
+ feeCenterDMM.setVesselId(billsMM.getVesselId());
|
|
|
+ feeCenterDMM.setVesselCnName(billsMM.getVesselCnName());
|
|
|
+ feeCenterDMM.setVesselEnName(billsMM.getVesselEnName());
|
|
|
+ feeCenterDMM.setVoyageNo(billsMM.getVoyageNo());
|
|
|
+ feeCenterDMM.setMblno(billsMM.getMblno());
|
|
|
+ feeCenterDMM.setHblno(bills.getHblno());
|
|
|
+ feeCenterDMM.setEtd(billsMM.getEtd());
|
|
|
+ feeCenterDMM.setEta(billsMM.getEta());
|
|
|
+ feeCenterDMM.setPolId(billsMM.getPolId());
|
|
|
+ feeCenterDMM.setPolCode(billsMM.getPolCode());
|
|
|
+ feeCenterDMM.setPolCnName(billsMM.getPolCnName());
|
|
|
+ feeCenterDMM.setPolEnName(billsMM.getPolEnName());
|
|
|
+ feeCenterDMM.setPodId(billsMM.getPodId());
|
|
|
+ feeCenterDMM.setPodCode(billsMM.getPodCode());
|
|
|
+ feeCenterDMM.setPodCnName(billsMM.getPodCnName());
|
|
|
+ feeCenterDMM.setPodEnName(billsMM.getPodEnName());
|
|
|
+ feeCenterDMM.setPaymode(billsMM.getMpaymode());
|
|
|
+ feeCenterDMM.setSort(1);
|
|
|
+ feeCenterDMM.setFeeId(fees.getId());
|
|
|
+ feeCenterDMM.setFeeCode(fees.getCode());
|
|
|
+ feeCenterDMM.setFeeCnName(fees.getCnName());
|
|
|
+ feeCenterDMM.setFeeEnName(fees.getEnName());
|
|
|
+ feeCenterDMM.setUnitNo("JOB");
|
|
|
+ feeCenterDMM.setCurCode(feeCenterC.getCurCode());
|
|
|
+ feeCenterDMM.setExrate(feeCenterC.getExrate());
|
|
|
+ feeCenterDMM.setDc("D");
|
|
|
+ feeCenterDMM.setCorpType("国内直接客户");
|
|
|
+ BCorps corps = bCorpsService.getOne(new LambdaQueryWrapper<BCorps>()
|
|
|
+ .eq(BCorps::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BCorps::getIsDeleted, 0)
|
|
|
+ .eq(BCorps::getEnName, bills.getBranchName()));
|
|
|
+ if (corps == null) {
|
|
|
+ throw new RuntimeException("基础资料未查到往来单位" + bills.getBranchName());
|
|
|
+ }
|
|
|
+ feeCenterDMM.setCorpId(corps.getId());
|
|
|
+ feeCenterDMM.setCorpCnName(corps.getCnName());
|
|
|
+ feeCenterDMM.setCorpEnName(corps.getEnName());
|
|
|
+ feeCenterDMM.setShortName(corps.getShortName());
|
|
|
+ feeCenterDMM.setGenerationCorpId(corps.getBookingAgentId());
|
|
|
+ feeCenterDMM.setGenerationCorpCnName(corps.getBookingAgentCnName());
|
|
|
+ feeCenterDMM.setGenerationCorpEnName(corps.getBookingAgentEnName());
|
|
|
+ feeCenterDMM.setQuantity(new BigDecimal("1"));
|
|
|
+ feeCenterDMM.setPrice(feeCenterC.getPrice());
|
|
|
+ feeCenterDMM.setAmount(feeCenterC.getAmount());
|
|
|
+ feeCenterDMM.setAmountLoc(feeCenterC.getAmountLoc());
|
|
|
+ feeCenterDMM.setUnsettledAmount(feeCenterC.getAmount());
|
|
|
+ feeCenterDMM.setCreateUser(billsMM.getOperatorId());
|
|
|
+ feeCenterDMM.setCreateUserName(billsMM.getOperatorName());
|
|
|
+ feeCenterDMM.setCreateTime(new Date());
|
|
|
+ BigDecimal amount = feeCenterDMM.getAmount();
|
|
|
+ FinAccBills data = new FinAccBills();
|
|
|
+ data.setCurCode(feeCenterDMM.getCurCode());
|
|
|
+ data.setGenerationCorpId(feeCenterDMM.getGenerationCorpId());
|
|
|
+ data.setGenerationCorpCnName(feeCenterDMM.getGenerationCorpCnName());
|
|
|
+ data.setGenerationCorpEnName(feeCenterDMM.getGenerationCorpEnName());
|
|
|
+ data.setCreateTime(new Date());
|
|
|
+ data.setCreateUser(AuthUtil.getUserId());
|
|
|
+ data.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ data.setCreateDept(feeCenterDMM.getCreateDept());
|
|
|
+ data.setCreateDeptName(feeCenterDMM.getCreateDeptName());
|
|
|
+ data.setBranchId(feeCenterDMM.getBranchId());
|
|
|
+ data.setBranchName(feeCenterDMM.getBranchName());
|
|
|
+ data.setDeptId(Long.parseLong(feeCenterDMM.getBranchId()));
|
|
|
+ data.setDeptName(feeCenterDMM.getBranchName());
|
|
|
+ data.setBookingAgentId(feeCenterDMM.getBookingAgentId());
|
|
|
+ data.setBookingAgentCnName(feeCenterDMM.getBookingAgentCnName());
|
|
|
+ data.setBookingAgentEnName(feeCenterDMM.getBookingAgentEnName());
|
|
|
+ data.setTaxRate(feeCenterDMM.getTaxRate());
|
|
|
+ data.setAmountTax(feeCenterDMM.getAmountTax());
|
|
|
+ data.setBillBranchId(feeCenterDMM.getBillBranchId());
|
|
|
+ data.setBillBranchName(feeCenterDMM.getBillBranchName());
|
|
|
+ BusinessBillNo businessBillNo = new BusinessBillNo();
|
|
|
+ businessBillNo.setBusinessTypeId(businessType.getId());
|
|
|
+ businessBillNo.setCode("HYZD");
|
|
|
+ businessBillNo.setBranchId(feeCenterDMM.getBranchId());
|
|
|
+ R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
|
|
|
+ if (!clientBillNo.isSuccess()) {
|
|
|
+ throw new RuntimeException("生成账单编号失败");
|
|
|
+ }
|
|
|
+ data.setBillNo((String) clientBillNo.getData());
|
|
|
+ data.setBillDate(feeCenterDMM.getBillDate());
|
|
|
+ data.setAccountDc(feeCenterDMM.getDc());
|
|
|
+ data.setAccountDate(feeCenterDMM.getBillDate());
|
|
|
+ data.setBillKey(feeCenterDMM.getBillKey());
|
|
|
+ data.setBusinessType(feeCenterDMM.getBusinessType());
|
|
|
+ data.setBillType(feeCenterDMM.getBillType());
|
|
|
+ data.setBusinessBillId(feeCenterDMM.getPid());
|
|
|
+ data.setBusinessBillNo(feeCenterDMM.getBillNo());
|
|
|
+ data.setBusinessDate(feeCenterDMM.getBillDate());
|
|
|
+ data.setSrcId(billsMM.getSrcId());
|
|
|
+ data.setSrcCnName(billsMM.getSrcCnName());
|
|
|
+ data.setSrcEnName(billsMM.getSrcEnName());
|
|
|
+ data.setSrcType(billsMM.getSrcType());
|
|
|
+ data.setOperatorId(billsMM.getOperatorId());
|
|
|
+ data.setOperatorName(billsMM.getOperatorName());
|
|
|
+ data.setQuantityCntrDescr(billsMM.getQuantityCntrDescr());
|
|
|
+ data.setPaymode(feeCenterDMM.getPaymode());
|
|
|
+ data.setCorpId(feeCenterDMM.getCorpId());
|
|
|
+ data.setCorpCnName(feeCenterDMM.getCorpCnName());
|
|
|
+ data.setCorpEnName(feeCenterDMM.getCorpEnName());
|
|
|
+ data.setCorpArgreementNo(billsMM.getCorpArgreementNo());
|
|
|
+ data.setBillCorpId(feeCenterDMM.getBillCorpId());
|
|
|
+ data.setBillCorpCnName(feeCenterDMM.getBillCorpCnName());
|
|
|
+ data.setBillCorpEnName(feeCenterDMM.getBillCorpEnName());
|
|
|
+ data.setVesselId(feeCenterDMM.getVesselId());
|
|
|
+ data.setVesselCnName(feeCenterDMM.getVesselCnName());
|
|
|
+ data.setVesselEnName(feeCenterDMM.getVesselEnName());
|
|
|
+ data.setVoyageNo(feeCenterDMM.getVoyageNo());
|
|
|
+ data.setMblno(feeCenterDMM.getMblno());
|
|
|
+ data.setHblno(feeCenterDMM.getHblno());
|
|
|
+ data.setRefno(billsMM.getRefno());
|
|
|
+ data.setBookingNo(billsMM.getBookingNo());
|
|
|
+ data.setEtd(feeCenterDMM.getEtd());
|
|
|
+ data.setEta(feeCenterDMM.getEta());
|
|
|
+ data.setPolId(feeCenterDMM.getPolId());
|
|
|
+ data.setPolCnName(feeCenterDMM.getPolCnName());
|
|
|
+ data.setPolEnName(feeCenterDMM.getPolEnName());
|
|
|
+ data.setPolNamePrint(billsMM.getPolNamePrint());
|
|
|
+ data.setPodId(feeCenterDMM.getPodId());
|
|
|
+ data.setPodCnName(feeCenterDMM.getPodCnName());
|
|
|
+ data.setPodCode(feeCenterDMM.getPodCode());
|
|
|
+ data.setPodEnName(feeCenterDMM.getPodEnName());
|
|
|
+ data.setPodNamePrint(billsMM.getPodNamePrint());
|
|
|
+ data.setTrackingNumber(feeCenterDMM.getTrackingNumber());
|
|
|
+ data.setAccountType("LOCAL");
|
|
|
+ BigDecimal amountLoc = feeCenterDMM.getAmountLoc();
|
|
|
+ if ("D".equals(feeCenterDMM.getDc())) {
|
|
|
+ if (exrateType.equals(feeCenterDMM.getCurCode())) {
|
|
|
+ data.setAmountDr(amount);
|
|
|
+ } else {
|
|
|
+ data.setAmountDrUsd(amount);
|
|
|
+ }
|
|
|
+ data.setAmountDrLoc(amountLoc);
|
|
|
+ } else {
|
|
|
+ if (exrateType.equals(feeCenterDMM.getCurCode())) {
|
|
|
+ data.setAmountCr(amount);
|
|
|
+ } else {
|
|
|
+ data.setAmountCrUsd(amount);
|
|
|
+ }
|
|
|
+ data.setAmountCrLoc(amountLoc);
|
|
|
+ }
|
|
|
+ data.setExrate(feeCenterDMM.getExrate());
|
|
|
+ finAccBillsService.saveOrUpdate(data);
|
|
|
+ feeCenterDMM.setAccBillId(data.getId());
|
|
|
+ feeCenterDMM.setAccBillNo(data.getBillNo());
|
|
|
+ feeCenterDMM.setAccDate(data.getBillDate());
|
|
|
+ feeCenterDMM.setAccAmount(amountLoc);
|
|
|
+ feeCenterDMM.setAccStatus(1);
|
|
|
+ feeCenterDMM.setAccById(AuthUtil.getUserId());
|
|
|
+ feeCenterDMM.setAccByName(AuthUtil.getUserName());
|
|
|
+ feeCenterDMM.setAuditStatus("4");
|
|
|
+ feeCenterService.save(feeCenterDMM);
|
|
|
+ if (feeCenterListMM.isEmpty()) {
|
|
|
+ feeCenterListMM = new ArrayList<>();
|
|
|
+ }
|
|
|
+ feeCenterListMM.add(feeCenterDMM);
|
|
|
+ Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenterListMM, exrateType);
|
|
|
+ if (billsAmount != null) {
|
|
|
+ billsMM.setAccountStatus(billsAmount.getAccountStatus());
|
|
|
+ billsMM.setAmountDr(billsAmount.getAmountDr());
|
|
|
+ billsMM.setOceanFreightDr(billsAmount.getOceanFreightDr());
|
|
|
+ billsMM.setAmountCr(billsAmount.getAmountCr());
|
|
|
+ billsMM.setOceanFreightCr(billsAmount.getOceanFreightCr());
|
|
|
+ billsMM.setAmountProfit(billsAmount.getAmountProfit());
|
|
|
+ billsMM.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
|
|
|
+ billsMM.setAmountDrUsd(billsAmount.getAmountDrUsd());
|
|
|
+ billsMM.setAmountCrUsd(billsAmount.getAmountCrUsd());
|
|
|
+ billsMM.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
|
|
|
+ billsMM.setAmountDrLoc(billsAmount.getAmountDrLoc());
|
|
|
+ billsMM.setAmountCrLoc(billsAmount.getAmountCrLoc());
|
|
|
+ billsMM.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
|
|
|
+ int versionMM = StringUtil.isBlank(billsMM.getVersion()) ? 1 : Integer.parseInt(billsMM.getVersion());
|
|
|
+ billsMM.setVersion(String.valueOf(versionMM + 1));
|
|
|
+ billsMapper.updateById(billsMM);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ feeCenterListAcc.add(feeCenter);
|
|
|
+ feeCenterListAcc.add(feeCenterC);
|
|
|
+ if (feeCenterList.isEmpty()) {
|
|
|
+ feeCenterList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ feeCenterList.add(feeCenter);
|
|
|
+ feeCenterList.add(feeCenterC);
|
|
|
+ String exrateType = currencyUtils.standardCurrency(bills.getBranchId());
|
|
|
+ Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenterList, exrateType);
|
|
|
+ if (billsAmount != null) {
|
|
|
+ bills.setAccountStatus(billsAmount.getAccountStatus());
|
|
|
+ bills.setAmountDr(billsAmount.getAmountDr());
|
|
|
+ bills.setOceanFreightDr(billsAmount.getOceanFreightDr());
|
|
|
+ bills.setAmountCr(billsAmount.getAmountCr());
|
|
|
+ bills.setOceanFreightCr(billsAmount.getOceanFreightCr());
|
|
|
+ bills.setAmountProfit(billsAmount.getAmountProfit());
|
|
|
+ bills.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
|
|
|
+ bills.setAmountDrUsd(billsAmount.getAmountDrUsd());
|
|
|
+ bills.setAmountCrUsd(billsAmount.getAmountCrUsd());
|
|
|
+ bills.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
|
|
|
+ bills.setAmountDrLoc(billsAmount.getAmountDrLoc());
|
|
|
+ bills.setAmountCrLoc(billsAmount.getAmountCrLoc());
|
|
|
+ bills.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
|
|
|
+ }
|
|
|
+ for (FeeCenter item : feeCenterListAcc) {
|
|
|
+ BigDecimal amount = item.getAmount();
|
|
|
+ FinAccBills data = new FinAccBills();
|
|
|
+ data.setCurCode(item.getCurCode());
|
|
|
+ data.setGenerationCorpId(item.getGenerationCorpId());
|
|
|
+ data.setGenerationCorpCnName(item.getGenerationCorpCnName());
|
|
|
+ data.setGenerationCorpEnName(item.getGenerationCorpEnName());
|
|
|
+ data.setCreateTime(new Date());
|
|
|
+ data.setCreateUser(AuthUtil.getUserId());
|
|
|
+ data.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ data.setCreateDept(item.getCreateDept());
|
|
|
+ data.setCreateDeptName(item.getCreateDeptName());
|
|
|
+ data.setBranchId(item.getBranchId());
|
|
|
+ data.setBranchName(item.getBranchName());
|
|
|
+ data.setDeptId(Long.parseLong(item.getBranchId()));
|
|
|
+ data.setDeptName(item.getBranchName());
|
|
|
+ data.setBookingAgentId(item.getBookingAgentId());
|
|
|
+ data.setBookingAgentCnName(item.getBookingAgentCnName());
|
|
|
+ data.setBookingAgentEnName(item.getBookingAgentEnName());
|
|
|
+ data.setTaxRate(item.getTaxRate());
|
|
|
+ data.setAmountTax(item.getAmountTax());
|
|
|
+ data.setBillBranchId(item.getBillBranchId());
|
|
|
+ data.setBillBranchName(item.getBillBranchName());
|
|
|
+ BusinessBillNo businessBillNo = new BusinessBillNo();
|
|
|
+ businessBillNo.setBusinessTypeId(businessType.getId());
|
|
|
+ businessBillNo.setCode("HYZD");
|
|
|
+ businessBillNo.setBranchId(item.getBranchId());
|
|
|
+ R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
|
|
|
+ if (!clientBillNo.isSuccess()) {
|
|
|
+ throw new RuntimeException("生成账单编号失败");
|
|
|
+ }
|
|
|
+ data.setBillNo((String) clientBillNo.getData());
|
|
|
+ data.setBillDate(item.getBillDate());
|
|
|
+ data.setAccountDc(item.getDc());
|
|
|
+ data.setAccountDate(item.getBillDate());
|
|
|
+ data.setBillKey(item.getBillKey());
|
|
|
+ data.setBusinessType(item.getBusinessType());
|
|
|
+ data.setBillType(item.getBillType());
|
|
|
+ data.setBusinessBillId(item.getPid());
|
|
|
+ data.setBusinessBillNo(item.getBillNo());
|
|
|
+ data.setBusinessDate(item.getBillDate());
|
|
|
+ data.setSrcId(bills.getSrcId());
|
|
|
+ data.setSrcCnName(bills.getSrcCnName());
|
|
|
+ data.setSrcEnName(bills.getSrcEnName());
|
|
|
+ data.setSrcType(bills.getSrcType());
|
|
|
+ data.setOperatorId(bills.getOperatorId());
|
|
|
+ data.setOperatorName(bills.getOperatorName());
|
|
|
+ data.setQuantityCntrDescr(bills.getQuantityCntrDescr());
|
|
|
+ data.setPaymode(item.getPaymode());
|
|
|
+ data.setCorpId(item.getCorpId());
|
|
|
+ data.setCorpCnName(item.getCorpCnName());
|
|
|
+ data.setCorpEnName(item.getCorpEnName());
|
|
|
+ data.setCorpArgreementNo(bills.getCorpArgreementNo());
|
|
|
+ data.setBillCorpId(item.getBillCorpId());
|
|
|
+ data.setBillCorpCnName(item.getBillCorpCnName());
|
|
|
+ data.setBillCorpEnName(item.getBillCorpEnName());
|
|
|
+ data.setVesselId(item.getVesselId());
|
|
|
+ data.setVesselCnName(item.getVesselCnName());
|
|
|
+ data.setVesselEnName(item.getVesselEnName());
|
|
|
+ data.setVoyageNo(item.getVoyageNo());
|
|
|
+ data.setMblno(item.getMblno());
|
|
|
+ data.setHblno(item.getHblno());
|
|
|
+ data.setRefno(bills.getRefno());
|
|
|
+ data.setBookingNo(bills.getBookingNo());
|
|
|
+ data.setEtd(item.getEtd());
|
|
|
+ data.setEta(item.getEta());
|
|
|
+ data.setPolId(item.getPolId());
|
|
|
+ data.setPolCnName(item.getPolCnName());
|
|
|
+ data.setPolEnName(item.getPolEnName());
|
|
|
+ data.setPolNamePrint(bills.getPolNamePrint());
|
|
|
+ data.setPodId(item.getPodId());
|
|
|
+ data.setPodCnName(item.getPodCnName());
|
|
|
+ data.setPodCode(item.getPodCode());
|
|
|
+ data.setPodEnName(item.getPodEnName());
|
|
|
+ data.setPodNamePrint(bills.getPodNamePrint());
|
|
|
+ data.setTrackingNumber(item.getTrackingNumber());
|
|
|
+ data.setAccountType("LOCAL");
|
|
|
+ BigDecimal amountLoc = item.getAmountLoc();
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ if (exrateType.equals(item.getCurCode())) {
|
|
|
+ data.setAmountDr(amount);
|
|
|
+ } else {
|
|
|
+ data.setAmountDrUsd(amount);
|
|
|
+ }
|
|
|
+ data.setAmountDrLoc(amountLoc);
|
|
|
+ } else {
|
|
|
+ if (exrateType.equals(item.getCurCode())) {
|
|
|
+ data.setAmountCr(amount);
|
|
|
+ } else {
|
|
|
+ data.setAmountCrUsd(amount);
|
|
|
+ }
|
|
|
+ data.setAmountCrLoc(amountLoc);
|
|
|
+ }
|
|
|
+ data.setExrate(item.getExrate());
|
|
|
+ finAccBillsService.saveOrUpdate(data);
|
|
|
+ item.setAccBillId(data.getId());
|
|
|
+ item.setAccBillNo(data.getBillNo());
|
|
|
+ item.setAccDate(data.getBillDate());
|
|
|
+ item.setAccAmount(amountLoc);
|
|
|
+ item.setAccStatus(1);
|
|
|
+ item.setAccById(AuthUtil.getUserId());
|
|
|
+ item.setAccByName(AuthUtil.getUserName());
|
|
|
+ item.setAuditStatus("4");
|
|
|
+ }
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenterListAcc);
|
|
|
+ }
|
|
|
+ billsMapper.updateById(bills);
|
|
|
+ if ("已转单".equals(bills.getTransferOrderStatus())){
|
|
|
+ Bills billsJk = billsMapper.selectOne(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId,AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted,0)
|
|
|
+ .eq(Bills::getHblno,bills.getHblno()));
|
|
|
+ if (billsJk != null){
|
|
|
+ billsJk.setPodFreeBoxUseDays(billsJk.getPodFreeBoxUseDays() + seaFeeday.getApplyDays());
|
|
|
+ billsJk.setUpdateTime(new Date());
|
|
|
+ billsJk.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ billsJk.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ int versionJk = StringUtil.isBlank(billsJk.getVersion()) ? 1 : Integer.parseInt(billsJk.getVersion());
|
|
|
+ billsJk.setVersion(String.valueOf(versionJk + 1));
|
|
|
+ billsMapper.updateById(billsJk);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2226,6 +2781,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
finAccBills.setTaxRate(feeCenterUpdateRecord.getTaxRateUpdate());
|
|
|
finAccBills.setAmountTax(feeCenterUpdateRecord.getAmountTaxUpdate());
|
|
|
finAccBills.setCurCode(feeCenterUpdateRecord.getCurCodeUpdate());
|
|
|
+ finAccBills.setRemarks(feeCenterUpdateRecord.getRemarksUpdate());
|
|
|
finAccBillsService.updateById(finAccBills);
|
|
|
}
|
|
|
}
|