This commit is contained in:
linfso 2024-07-28 20:31:50 +08:00
parent eb33722b48
commit f39dec00b8

View File

@ -10,53 +10,52 @@
package com.xdadan.erp.emis.service.impl;
import java.awt.image.BufferedImage;
import java.io.*;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.util.*;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.PictureType;
import com.deepoove.poi.data.Pictures;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.googlecode.aviator.AviatorEvaluator;
import com.xdadan.erp.common.core.domain.entity.SysUser;
import com.xdadan.erp.common.core.redis.RedissonService;
import com.xdadan.erp.common.utils.BarcodeUtils;
import com.xdadan.erp.common.utils.DateUtils;
import com.xdadan.erp.common.utils.DictUtils;
import com.xdadan.erp.common.utils.SecurityUtils;
import com.xdadan.erp.emis.domain.*;
import com.xdadan.erp.emis.domain.enumtype.*;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.domain.vo.WaybillOrder;
import com.xdadan.erp.emis.domain.vo.scan.ScanInfo;
import com.xdadan.erp.emis.mapper.*;
import com.xdadan.erp.emis.service.EmisBaseService;
import com.xdadan.erp.emis.service.IEmisElectronicSitePagService;
import com.xdadan.erp.emis.service.IEmisTmsScanRecordService;
import com.xdadan.erp.emis.service.IEmisWaybillService;
import com.xdadan.erp.emis.service.warehouse.DocUtils;
import com.xdadan.erp.emis.utils.WaybillHelper;
import com.xdadan.erp.emis.utils.sensitive.Convert;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSONObject;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.PictureType;
import com.deepoove.poi.data.Pictures;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.googlecode.aviator.AviatorEvaluator;
import com.xdadan.erp.common.annotation.audit.DataAuditFilter;
import com.xdadan.erp.common.core.domain.AjaxResult;
import com.xdadan.erp.common.core.domain.entity.SysUser;
import com.xdadan.erp.common.core.redis.RedissonService;
import com.xdadan.erp.common.utils.BarcodeUtils;
import com.xdadan.erp.common.utils.DateUtils;
import com.xdadan.erp.common.utils.DictUtils;
import com.xdadan.erp.common.utils.SecurityUtils;
import com.xdadan.erp.emis.domain.*;
import com.xdadan.erp.emis.domain.enumtype.*;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.domain.vo.*;
import com.xdadan.erp.emis.domain.vo.scan.ScanInfo;
import com.xdadan.erp.emis.mapper.*;
import com.xdadan.erp.emis.service.*;
import com.xdadan.erp.emis.service.warehouse.DocUtils;
import com.xdadan.erp.emis.utils.WaybillHelper;
import com.xdadan.erp.emis.utils.sensitive.Convert;
import com.xdadan.erp.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.util.*;
/**
* 运单列表Service业务层处理
@ -1520,6 +1519,35 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
EmisTransLine emisTransLine = getTransLineByCode(emisWaybillSave.getTransLineType());
emisWaybillSave.setMeterType(emisTransLine.getMeterRate());
// 计算标准运费
List<EmisWaybillFeeitem> feeitemList=emisWaybillSave.getFeeitemList();
BigDecimal totalRealFee = BigDecimal.ZERO;
if(!CollectionUtils.isEmpty(feeitemList)){
for (EmisWaybillFeeitem feeItem:feeitemList) {
BigDecimal realFee = feeItem.getFee();
// 汇率计算
if( !StringUtils.isEmpty(feeItem.getCurrency()) ){
EmisExchangeRate emisExchangeRate=emisExchangeRateMapper.getValidExchangeRate(feeItem.getCurrency(),"CNY");
if(emisExchangeRate!=null){
BigDecimal rate=BigDecimal.valueOf(Double.valueOf(emisExchangeRate.getRate()));
realFee=realFee.multiply(rate);
realFee=realFee.setScale(2,BigDecimal.ROUND_HALF_UP);
}
// 汇率查不到的情况就不计算
else{
// realFee=BigDecimal.ZERO;
}
}
totalRealFee=totalRealFee.add(realFee);
}
totalRealFee=totalRealFee.setScale(2,BigDecimal.ROUND_HALF_UP);
emisWaybillSave.setRealFee(totalRealFee);
}
// 时效
EmisTransProduct emisTransProduct = getTransProductByCode(emisWaybillSave.getProductType());
emisWaybillSave.setTimeType(emisTransProduct.getAgingDesc());
@ -1528,6 +1556,8 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
emisWaybillSave.setSendDate(new Date());
}
// 开单当天不算时效
Date estDate = getEstimateDate(
emisWaybillSave.getSendDate(),emisWaybillSave.getProductType(),
@ -1567,30 +1597,7 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
// 公共计算部分
calcWayBillCommonInfo(emisWaybillSave,true);
// 计算标准运费
List<EmisWaybillFeeitem> feeitemList=emisWaybillSave.getFeeitemList();
BigDecimal totalRealFee = BigDecimal.ZERO;
if(!CollectionUtils.isEmpty(feeitemList)){
for (EmisWaybillFeeitem feeItem:feeitemList) {
BigDecimal realFee = feeItem.getFee();
// 汇率计算
if( !StringUtils.isEmpty(feeItem.getCurrency()) ){
EmisExchangeRate emisExchangeRate=emisExchangeRateMapper.getValidExchangeRate(feeItem.getCurrency(),"CNY");
if(emisExchangeRate!=null){
BigDecimal rate=BigDecimal.valueOf(Double.valueOf(emisExchangeRate.getRate()));
realFee=realFee.multiply(rate);
realFee=realFee.setScale(2,BigDecimal.ROUND_HALF_UP);
}
}
totalRealFee=totalRealFee.add(realFee);
}
totalRealFee=totalRealFee.setScale(2,BigDecimal.ROUND_HALF_UP);
emisWaybillSave.setRealFee(totalRealFee);
}
//补齐数据
emisWaybillMapper.insertEmisWaybill(emisWaybillSave);