|
|
@@ -23,21 +23,19 @@ 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.los.Util.IDeptUtils;
|
|
|
import org.springblade.los.basic.corps.entity.BCorps;
|
|
|
import org.springblade.los.basic.corps.service.IBCorpsService;
|
|
|
import org.springblade.los.basic.cur.entity.BCurrency;
|
|
|
import org.springblade.los.basic.cur.service.IBCurrencyService;
|
|
|
import org.springblade.los.basic.fees.entity.FeesTemplateItems;
|
|
|
+import org.springblade.los.basic.fees.entity.FeesTemplateSonItems;
|
|
|
import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
|
|
|
+import org.springblade.los.basic.fees.service.IFeesTemplateItemsService;
|
|
|
+import org.springblade.los.basic.fees.service.IFeesTemplateSonItemsService;
|
|
|
import org.springblade.los.box.entity.TradingBox;
|
|
|
import org.springblade.los.box.mapper.TradingBoxMapper;
|
|
|
-import org.springblade.los.business.aea.entity.AeaBills;
|
|
|
-import org.springblade.los.business.aea.mapper.AeaBillsMapper;
|
|
|
import org.springblade.los.business.amends.entity.Amends;
|
|
|
import org.springblade.los.business.amends.mapper.AmendsMapper;
|
|
|
-import org.springblade.los.business.customsDeclaration.entity.CustomsDeclaration;
|
|
|
-import org.springblade.los.business.customsDeclaration.mapper.CustomsDeclarationMapper;
|
|
|
import org.springblade.los.business.sea.entity.Bills;
|
|
|
import org.springblade.los.business.sea.entity.PreContainers;
|
|
|
import org.springblade.los.business.sea.mapper.BillsMapper;
|
|
|
@@ -69,14 +67,8 @@ import java.util.stream.Collectors;
|
|
|
public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter> implements IFeeCenterService {
|
|
|
private final ISysClient sysClient;
|
|
|
|
|
|
- private final IDeptUtils deptUtils;
|
|
|
-
|
|
|
private final BillsMapper billsMapper;
|
|
|
|
|
|
- private final AeaBillsMapper aeaBillsMapper;
|
|
|
-
|
|
|
- private final CustomsDeclarationMapper customsDeclarationMapper;
|
|
|
-
|
|
|
private final AmendsMapper amendsMapper;
|
|
|
|
|
|
private final IBCurrencyService bCurrencyService;
|
|
|
@@ -87,6 +79,10 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
|
|
|
private final TradingBoxMapper tradingBoxMapper;
|
|
|
|
|
|
+ private final IFeesTemplateItemsService feesTemplateItemsService;
|
|
|
+
|
|
|
+ private final IFeesTemplateSonItemsService feesTemplateSonItemsService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<FeeCenterVO> selectFeeCenterPage(IPage<FeeCenterVO> page, FeeCenterVO feeCenter) {
|
|
|
return page.setRecords(baseMapper.selectFeeCenterPage(page, feeCenter));
|
|
|
@@ -95,16 +91,13 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R submit(FeeCenter feeCenter) {
|
|
|
- String deptId = "";
|
|
|
+ String deptId = AuthUtil.getDeptId();
|
|
|
String deptName = "";
|
|
|
- String branchId = deptUtils.getDeptPid() + "";
|
|
|
+ String branchId = AuthUtil.getDeptId();
|
|
|
//获取部门ids对应中文名
|
|
|
- if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
|
|
|
- deptId = AuthUtil.getDeptId();
|
|
|
- R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
|
|
|
- if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
- deptName = String.join(",", res.getData());
|
|
|
- }
|
|
|
+ R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
|
|
|
+ if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
+ deptName = res.getData();
|
|
|
}
|
|
|
if (ObjectUtils.isNotNull(feeCenter.getBillCorpId())) {
|
|
|
BCorps corps = bCorpsService.getById(feeCenter.getBillCorpId());
|
|
|
@@ -132,48 +125,18 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
feeCenter.setUpdateTime(new Date());
|
|
|
feeCenter.setUpdateUserName(AuthUtil.getUserName());
|
|
|
}
|
|
|
-
|
|
|
- /** --------------------金额计算-------------------------**/
|
|
|
- // 去税金额 = 数量quantity * 单价price
|
|
|
- BigDecimal amountNet = new BigDecimal("0.00");
|
|
|
- // 税额 = 去税金额amountNet * 税率taxRateSum
|
|
|
- BigDecimal amountTax = new BigDecimal("0.00");
|
|
|
- // 金额,amountTax + 去税金额amountNet - 折扣金额amountDiscount
|
|
|
- BigDecimal amount = new BigDecimal("0.00");
|
|
|
- //总税率 = 税率taxRate + 附加税率surchargeRate
|
|
|
- BigDecimal taxRate = new BigDecimal("0.00");
|
|
|
- // 税率 = 总税率/100
|
|
|
- BigDecimal taxRateSum = new BigDecimal("0.00");
|
|
|
-
|
|
|
+ // 金额
|
|
|
+ BigDecimal amount = feeCenter.getAmount();
|
|
|
//计算字段null值处理
|
|
|
feeCenter.setQuantity(ObjectUtils.isNotNull(feeCenter.getQuantity()) ? feeCenter.getQuantity() : new BigDecimal("0.00"));
|
|
|
feeCenter.setPrice(ObjectUtils.isNotNull(feeCenter.getPrice()) ? feeCenter.getPrice() : new BigDecimal("0.00"));
|
|
|
- feeCenter.setSurchargeRate(ObjectUtils.isNotNull(feeCenter.getSurchargeRate()) ? feeCenter.getSurchargeRate() : new BigDecimal("0.00"));
|
|
|
- feeCenter.setTaxRate(ObjectUtils.isNotNull(feeCenter.getTaxRate()) ? feeCenter.getTaxRate() : new BigDecimal("0.00"));
|
|
|
- feeCenter.setAmountDiscount(ObjectUtils.isNotNull(feeCenter.getAmountDiscount()) ? feeCenter.getAmountDiscount() : new BigDecimal("0.00"));
|
|
|
feeCenter.setStlTtlAmount(ObjectUtils.isNotNull(feeCenter.getStlTtlAmount()) ? feeCenter.getStlTtlAmount() : new BigDecimal("0.00"));
|
|
|
-
|
|
|
- amountNet = amountNet.add(feeCenter.getQuantity().multiply(feeCenter.getPrice()))
|
|
|
- .setScale(2, RoundingMode.HALF_UP);
|
|
|
- taxRate = taxRate.add(feeCenter.getTaxRate()).add(feeCenter.getSurchargeRate());
|
|
|
- taxRateSum = taxRateSum.add(taxRate.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
|
|
|
- amountTax = amountTax.add(amountNet.multiply(taxRateSum)).setScale(2, RoundingMode.HALF_UP);
|
|
|
- amount = amount.add(amountNet.add(amountTax).subtract(feeCenter.getAmountDiscount()));
|
|
|
-
|
|
|
//判断是否是本位币
|
|
|
if ("CNY".equals(feeCenter.getCurCode())) {
|
|
|
- feeCenter.setAmountNetLoc(amountNet);
|
|
|
- feeCenter.setAmountTaxLoc(amountTax);
|
|
|
feeCenter.setAmountLoc(amount);
|
|
|
- feeCenter.setAmountDiscountLoc(amount);
|
|
|
} else {
|
|
|
- feeCenter.setAmountNetLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountNet, "", "1"));
|
|
|
- feeCenter.setAmountTaxLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountTax, "", "1"));
|
|
|
feeCenter.setAmountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount, "", "1"));
|
|
|
- feeCenter.setAmountDiscountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount, "", "1"));
|
|
|
}
|
|
|
- feeCenter.setAmountNet(amountNet);
|
|
|
- feeCenter.setAmountTax(amountTax);
|
|
|
feeCenter.setAmount(amount);
|
|
|
feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
|
|
|
this.saveOrUpdate(feeCenter);
|
|
|
@@ -355,186 +318,6 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
}
|
|
|
}
|
|
|
this.saveOrUpdateBatch(list);
|
|
|
- } else if ("KYCK".equals(losBFeesTemplate.getBusinessTypeCode()) || "KYJK".equals(losBFeesTemplate.getBusinessTypeCode())) {
|
|
|
- AeaBills bills = aeaBillsMapper.selectById(losBFeesTemplate.getBillNoId());
|
|
|
- if (bills == null) {
|
|
|
- throw new RuntimeException("未找到主表信息");
|
|
|
- }
|
|
|
- if (!losBFeesTemplate.getFeesTemplateItemsList().isEmpty()) {
|
|
|
- int count = 1;
|
|
|
- for (FeesTemplateItems items : losBFeesTemplate.getFeesTemplateItemsList()) {
|
|
|
- FeeCenter feeCenter = new FeeCenter();
|
|
|
-
|
|
|
- feeCenter.setElementsCnName(items.getElementsCnName());
|
|
|
- feeCenter.setElementsEnName(items.getElementsEnName());
|
|
|
- feeCenter.setElementsId(items.getElementsId());
|
|
|
- feeCenter.setElementsCode(items.getElementsCode());
|
|
|
-
|
|
|
- feeCenter.setPid(bills.getId());
|
|
|
- feeCenter.setBillNo(bills.getBillNo());
|
|
|
- feeCenter.setBusinessType(bills.getBusinessType());
|
|
|
- feeCenter.setBillType(bills.getBillType());
|
|
|
- feeCenter.setBillDate(bills.getBillDate());
|
|
|
- feeCenter.setBillCorpId(bills.getCorpId());
|
|
|
- feeCenter.setBillCorpCnName(bills.getCorpCnName());
|
|
|
- feeCenter.setBillCorpEnName(bills.getCorpEnName());
|
|
|
- feeCenter.setVoyageNo(bills.getVoyageNo());
|
|
|
- feeCenter.setMblno(bills.getMblno());
|
|
|
- feeCenter.setHblno(bills.getHblno());
|
|
|
- feeCenter.setEtd(bills.getEtd());
|
|
|
- feeCenter.setEta(bills.getEta());
|
|
|
- feeCenter.setDc(losBFeesTemplate.getDc());
|
|
|
- feeCenter.setSort(count);
|
|
|
- count++;
|
|
|
- feeCenter.setCorpId(items.getCorpId());
|
|
|
- feeCenter.setCorpCnName(items.getCorpCnName());
|
|
|
- feeCenter.setCorpEnName(items.getCorpEnName());
|
|
|
- feeCenter.setShortName(items.getCorpCnName());
|
|
|
- feeCenter.setFeeId(items.getFeeId());
|
|
|
- feeCenter.setFeeCode(items.getFeeCode());
|
|
|
- feeCenter.setFeeCnName(items.getFeeCnName());
|
|
|
- feeCenter.setFeeEnName(items.getFeeEnName());
|
|
|
- feeCenter.setUnitNo(items.getUnitNo());
|
|
|
- feeCenter.setPrice(items.getPrice());
|
|
|
- feeCenter.setCurCode(items.getCurCode());
|
|
|
- if (ObjectUtils.isNotNull(feeCenter.getCurCode())) {
|
|
|
- BCurrency bCurrency = new BCurrency();
|
|
|
- bCurrency.setDate(bills.getEtd());
|
|
|
- bCurrency.setDc(losBFeesTemplate.getDc());
|
|
|
- List<BCurrency> bCurrencyList = bCurrencyService.getExrate(bCurrency);
|
|
|
- if (!bCurrencyList.isEmpty()) {
|
|
|
- BCurrency currency = bCurrencyList.stream().filter(e -> e.getCode().equals(feeCenter.getCurCode())).findFirst().orElse(null);
|
|
|
- if (currency != null) {
|
|
|
- feeCenter.setExrate(currency.getExrate());
|
|
|
- } else {
|
|
|
- throw new RuntimeException("未找到汇率信息");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if ("按票".equals(items.getQuantityRule())) {
|
|
|
- if ("JOB".equals(items.getUnitNo())) {
|
|
|
- feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
- feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
|
|
|
- } else {
|
|
|
- text += "费用:" + items.getFeeCnName() + "计量单位不等于JOB!";
|
|
|
- continue;
|
|
|
- }
|
|
|
- } else if ("按重量".equals(items.getQuantityRule())) {
|
|
|
- if ("KGS".equals(items.getUnitNo())) {
|
|
|
- feeCenter.setQuantity(bills.getGrossWeight());
|
|
|
- feeCenter.setAmount(items.getPrice().multiply(bills.getGrossWeight()));
|
|
|
- } else {
|
|
|
- text += "费用:" + items.getFeeCnName() + "计量单位不等于KGS!";
|
|
|
- continue;
|
|
|
- }
|
|
|
- } else if ("按尺码".equals(items.getQuantityRule())) {
|
|
|
- if ("CBM".equals(items.getUnitNo())) {
|
|
|
- feeCenter.setQuantity(bills.getMeasurement());
|
|
|
- feeCenter.setAmount(items.getPrice().multiply(bills.getMeasurement()));
|
|
|
- } else {
|
|
|
- text += "费用:" + items.getFeeCnName() + "计量单位不等于CBM!";
|
|
|
- continue;
|
|
|
- }
|
|
|
- } else {
|
|
|
- feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
- feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
|
|
|
- }
|
|
|
- if (ObjectUtils.isNotNull(feeCenter.getAmount())) {
|
|
|
- feeCenter.setAmount(new BigDecimal("0"));
|
|
|
- }
|
|
|
- list.add(feeCenter);
|
|
|
- }
|
|
|
- }
|
|
|
- this.saveOrUpdateBatch(list);
|
|
|
- } else if ("BGSE".equals(losBFeesTemplate.getBusinessTypeCode()) || "BGSI".equals(losBFeesTemplate.getBusinessTypeCode())
|
|
|
- || "BGAE".equals(losBFeesTemplate.getBusinessTypeCode()) || "BGAI".equals(losBFeesTemplate.getBusinessTypeCode())) {
|
|
|
- CustomsDeclaration bills = customsDeclarationMapper.selectById(losBFeesTemplate.getBillNoId());
|
|
|
- if (bills == null) {
|
|
|
- throw new RuntimeException("未找到主表信息");
|
|
|
- }
|
|
|
- if (!losBFeesTemplate.getFeesTemplateItemsList().isEmpty()) {
|
|
|
- int count = 1;
|
|
|
- for (FeesTemplateItems items : losBFeesTemplate.getFeesTemplateItemsList()) {
|
|
|
- FeeCenter feeCenter = new FeeCenter();
|
|
|
-
|
|
|
- feeCenter.setElementsCnName(items.getElementsCnName());
|
|
|
- feeCenter.setElementsEnName(items.getElementsEnName());
|
|
|
- feeCenter.setElementsId(items.getElementsId());
|
|
|
- feeCenter.setElementsCode(items.getElementsCode());
|
|
|
-
|
|
|
- feeCenter.setPid(bills.getId());
|
|
|
- feeCenter.setBillNo(bills.getBillNo());
|
|
|
- feeCenter.setBusinessType(bills.getBusinessType());
|
|
|
- feeCenter.setBillType(bills.getSeaType());
|
|
|
- feeCenter.setBillDate(bills.getBillDate());
|
|
|
- feeCenter.setBillCorpId(bills.getCorpId());
|
|
|
- feeCenter.setBillCorpCnName(bills.getCorpCnName());
|
|
|
- feeCenter.setBillCorpEnName(bills.getCorpEnName());
|
|
|
- feeCenter.setMblno(bills.getMblno());
|
|
|
- feeCenter.setEtd(bills.getEtdDate());
|
|
|
- feeCenter.setDc(losBFeesTemplate.getDc());
|
|
|
- feeCenter.setSort(count);
|
|
|
- count++;
|
|
|
- feeCenter.setCorpId(items.getCorpId());
|
|
|
- feeCenter.setCorpCnName(items.getCorpCnName());
|
|
|
- feeCenter.setCorpEnName(items.getCorpEnName());
|
|
|
- feeCenter.setShortName(items.getCorpCnName());
|
|
|
- feeCenter.setFeeId(items.getFeeId());
|
|
|
- feeCenter.setFeeCode(items.getFeeCode());
|
|
|
- feeCenter.setFeeCnName(items.getFeeCnName());
|
|
|
- feeCenter.setFeeEnName(items.getFeeEnName());
|
|
|
- feeCenter.setUnitNo(items.getUnitNo());
|
|
|
- feeCenter.setPrice(items.getPrice());
|
|
|
- feeCenter.setCurCode(items.getCurCode());
|
|
|
- if (ObjectUtils.isNotNull(feeCenter.getCurCode())) {
|
|
|
- BCurrency bCurrency = new BCurrency();
|
|
|
- bCurrency.setDate(bills.getEtdDate());
|
|
|
- bCurrency.setDc(losBFeesTemplate.getDc());
|
|
|
- List<BCurrency> bCurrencyList = bCurrencyService.getExrate(bCurrency);
|
|
|
- if (!bCurrencyList.isEmpty()) {
|
|
|
- BCurrency currency = bCurrencyList.stream().filter(e -> e.getCode().equals(feeCenter.getCurCode())).findFirst().orElse(null);
|
|
|
- if (currency != null) {
|
|
|
- feeCenter.setExrate(currency.getExrate());
|
|
|
- } else {
|
|
|
- throw new RuntimeException("未找到汇率信息");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if ("按票".equals(items.getQuantityRule())) {
|
|
|
- if ("JOB".equals(items.getUnitNo())) {
|
|
|
- feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
- feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
|
|
|
- } else {
|
|
|
- text += "费用:" + items.getFeeCnName() + "计量单位不等于JOB!";
|
|
|
- continue;
|
|
|
- }
|
|
|
- } else if ("按重量".equals(items.getQuantityRule())) {
|
|
|
- if ("KGS".equals(items.getUnitNo())) {
|
|
|
- feeCenter.setQuantity(bills.getGrossWeight());
|
|
|
- feeCenter.setAmount(items.getPrice().multiply(bills.getGrossWeight()));
|
|
|
- } else {
|
|
|
- text += "费用:" + items.getFeeCnName() + "计量单位不等于KGS!";
|
|
|
- continue;
|
|
|
- }
|
|
|
- } else if ("按尺码".equals(items.getQuantityRule())) {
|
|
|
- if ("CBM".equals(items.getUnitNo())) {
|
|
|
- feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
- feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
|
|
|
- } else {
|
|
|
- text += "费用:" + items.getFeeCnName() + "计量单位不等于CBM!";
|
|
|
- continue;
|
|
|
- }
|
|
|
- } else {
|
|
|
- feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
- feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
|
|
|
- }
|
|
|
- if (ObjectUtils.isNotNull(feeCenter.getAmount())) {
|
|
|
- feeCenter.setAmount(new BigDecimal("0"));
|
|
|
- }
|
|
|
- list.add(feeCenter);
|
|
|
- }
|
|
|
- }
|
|
|
- this.saveOrUpdateBatch(list);
|
|
|
}
|
|
|
if (ObjectUtils.isNotNull(text)) {
|
|
|
return R.data(list, text + "未导入!!!");
|
|
|
@@ -546,15 +329,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R submitList(List<FeeCenter> list) {
|
|
|
- String deptId = "";
|
|
|
+ String deptId = AuthUtil.getDeptId();
|
|
|
String deptName = "";
|
|
|
- String branchId = deptUtils.getDeptPid() + "";
|
|
|
+ String branchId = AuthUtil.getDeptId();
|
|
|
//获取部门ids对应中文名
|
|
|
if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
|
|
|
- deptId = AuthUtil.getDeptId();
|
|
|
- R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
|
|
|
+ R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
|
|
|
if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
- deptName = String.join(",", res.getData());
|
|
|
+ deptName = res.getData();
|
|
|
}
|
|
|
}
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
@@ -587,63 +369,34 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
feeCenter.setUpdateTime(new Date());
|
|
|
feeCenter.setUpdateUserName(AuthUtil.getUserName());
|
|
|
}
|
|
|
-
|
|
|
- /** --------------------金额计算-------------------------**/
|
|
|
- // 去税金额 = 数量quantity * 单价price
|
|
|
- BigDecimal amountNet = new BigDecimal("0.00");
|
|
|
- // 税额 = 去税金额amountNet * 税率taxRateSum
|
|
|
- BigDecimal amountTax = new BigDecimal("0.00");
|
|
|
- // 金额,amountTax + 去税金额amountNet - 折扣金额amountDiscount
|
|
|
- BigDecimal amount = new BigDecimal("0.00");
|
|
|
- //总税率 = 税率taxRate + 附加税率surchargeRate
|
|
|
- BigDecimal taxRate = new BigDecimal("0.00");
|
|
|
- // 税率 = 总税率/100
|
|
|
- BigDecimal taxRateSum = new BigDecimal("0.00");
|
|
|
+ // 金额
|
|
|
+ BigDecimal amount = feeCenter.getAmount();
|
|
|
|
|
|
//计算字段null值处理
|
|
|
feeCenter.setQuantity(ObjectUtils.isNotNull(feeCenter.getQuantity()) ? feeCenter.getQuantity() : new BigDecimal("0.00"));
|
|
|
feeCenter.setPrice(ObjectUtils.isNotNull(feeCenter.getPrice()) ? feeCenter.getPrice() : new BigDecimal("0.00"));
|
|
|
- feeCenter.setSurchargeRate(ObjectUtils.isNotNull(feeCenter.getSurchargeRate()) ? feeCenter.getSurchargeRate() : new BigDecimal("0.00"));
|
|
|
- feeCenter.setTaxRate(ObjectUtils.isNotNull(feeCenter.getTaxRate()) ? feeCenter.getTaxRate() : new BigDecimal("0.00"));
|
|
|
- feeCenter.setAmountDiscount(ObjectUtils.isNotNull(feeCenter.getAmountDiscount()) ? feeCenter.getAmountDiscount() : new BigDecimal("0.00"));
|
|
|
feeCenter.setStlTtlAmount(ObjectUtils.isNotNull(feeCenter.getStlTtlAmount()) ? feeCenter.getStlTtlAmount() : new BigDecimal("0.00"));
|
|
|
-
|
|
|
- amountNet = amountNet.add(feeCenter.getQuantity().multiply(feeCenter.getPrice()))
|
|
|
- .setScale(2, RoundingMode.HALF_UP);
|
|
|
- taxRate = taxRate.add(feeCenter.getTaxRate()).add(feeCenter.getSurchargeRate());
|
|
|
- taxRateSum = taxRateSum.add(taxRate.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
|
|
|
- amountTax = amountTax.add(amountNet.multiply(taxRateSum)).setScale(2, RoundingMode.HALF_UP);
|
|
|
- amount = amount.add(amountNet.add(amountTax).subtract(feeCenter.getAmountDiscount()));
|
|
|
-
|
|
|
//判断是否是本位币
|
|
|
if ("CNY".equals(feeCenter.getCurCode())) {
|
|
|
- feeCenter.setAmountNetLoc(amountNet);
|
|
|
- feeCenter.setAmountTaxLoc(amountTax);
|
|
|
feeCenter.setAmountLoc(amount);
|
|
|
- feeCenter.setAmountDiscountLoc(amount);
|
|
|
} else {
|
|
|
- feeCenter.setAmountNetLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountNet, "", "1"));
|
|
|
- feeCenter.setAmountTaxLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountTax, "", "1"));
|
|
|
feeCenter.setAmountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount, "", "1"));
|
|
|
- feeCenter.setAmountDiscountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount, "", "1"));
|
|
|
}
|
|
|
- feeCenter.setAmountNet(amountNet);
|
|
|
- feeCenter.setAmountTax(amountTax);
|
|
|
feeCenter.setAmount(amount);
|
|
|
feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
|
|
|
feeCenterList.add(feeCenter);
|
|
|
}
|
|
|
this.saveOrUpdateBatch(feeCenterList);
|
|
|
|
|
|
- BigDecimal amountDr = new BigDecimal("0.00");
|
|
|
- BigDecimal amountCr = new BigDecimal("0.00");
|
|
|
- BigDecimal amountProfit = new BigDecimal("0.00");
|
|
|
- BigDecimal amountDrUsd = new BigDecimal("0.00");
|
|
|
- BigDecimal amountCrUsd = new BigDecimal("0.00");
|
|
|
- BigDecimal amountProfitUsd = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountDr;
|
|
|
+ BigDecimal amountCr;
|
|
|
+ BigDecimal amountProfit;
|
|
|
+ BigDecimal amountDrUsd;
|
|
|
+ BigDecimal amountCrUsd;
|
|
|
+ BigDecimal amountProfitUsd;
|
|
|
BigDecimal amountDrLoc = new BigDecimal("0.00");
|
|
|
BigDecimal amountCrLoc = new BigDecimal("0.00");
|
|
|
- BigDecimal amountProfitLoc = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountProfitLoc;
|
|
|
amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && "CNY".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && "USD".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && "CNY".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
@@ -766,142 +519,6 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
bills.setAmountCrLoc(amountCrLoc);
|
|
|
bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
billsMapper.updateById(bills);
|
|
|
- } else if ("AE".equals(list.get(0).getBusinessType()) || "AI".equals(list.get(0).getBusinessType())) {
|
|
|
- AeaBills aeaBills = aeaBillsMapper.selectById(list.get(0).getPid());
|
|
|
- //主单应加上分单费用
|
|
|
- if ("MM".equals(aeaBills.getBillType())) {
|
|
|
- List<AeaBills> details = aeaBillsMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
- .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(AeaBills::getIsDeleted, 0)
|
|
|
- .eq(AeaBills::getMasterId, aeaBills.getId()));
|
|
|
- if (!details.isEmpty()) {
|
|
|
- amountDr = amountDr.add(details.stream().map(AeaBills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountCr = amountCr.add(details.stream().map(AeaBills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountDrUsd = amountDrUsd.add(details.stream().map(AeaBills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountCrUsd = amountCrUsd.add(details.stream().map(AeaBills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountDrLoc = amountDrLoc.add(details.stream().map(AeaBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountCrLoc = amountCrLoc.add(details.stream().map(AeaBills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
-
|
|
|
- }
|
|
|
- } else if ("MH".equals(aeaBills.getBillType())) {
|
|
|
- AeaBills details = aeaBillsMapper.selectById(aeaBills.getMasterId());
|
|
|
- //重新计算主单合计
|
|
|
- if (details != null) {
|
|
|
- BigDecimal amountDrM = new BigDecimal("0.00");
|
|
|
- BigDecimal amountCrM = new BigDecimal("0.00");
|
|
|
- BigDecimal amountProfitM = new BigDecimal("0.00");
|
|
|
- BigDecimal amountDrUsdM = new BigDecimal("0.00");
|
|
|
- BigDecimal amountCrUsdM = new BigDecimal("0.00");
|
|
|
- BigDecimal amountProfitUsdM = new BigDecimal("0.00");
|
|
|
- BigDecimal amountDrLocM = new BigDecimal("0.00");
|
|
|
- BigDecimal amountCrLocM = new BigDecimal("0.00");
|
|
|
- BigDecimal amountProfitLocM = new BigDecimal("0.00");
|
|
|
- BigDecimal quantityM = new BigDecimal("0.00");
|
|
|
- BigDecimal grossWeightM = new BigDecimal("0.00");
|
|
|
- BigDecimal measurementM = new BigDecimal("0.00");
|
|
|
- List<FeeCenter> feeCenters = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
|
|
|
- .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(FeeCenter::getIsDeleted, 0)
|
|
|
- .eq(FeeCenter::getPid, details.getId()));
|
|
|
- for (FeeCenter item : feeCenters) {
|
|
|
- if ("C".equals(item.getDc())) {
|
|
|
- if ("USD".equals(item.getCurCode())) {
|
|
|
- amountCrUsdM = amountCrUsdM.add(item.getAmount());
|
|
|
- } else if ("CNY".equals(item.getCurCode())) {
|
|
|
- amountCrM = amountCrM.add(item.getAmount());
|
|
|
- } else {
|
|
|
- BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
|
|
|
- amountCrUsdM = amountCrUsdM.add(usd);
|
|
|
- }
|
|
|
- } else {
|
|
|
- if ("USD".equals(item.getCurCode())) {
|
|
|
- amountDrUsdM = amountDrUsdM.add(item.getAmount());
|
|
|
- } else if ("CNY".equals(item.getCurCode())) {
|
|
|
- amountDrM = amountDrM.add(item.getAmount());
|
|
|
- } else {
|
|
|
- BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
|
|
|
- amountDrUsdM = amountDrUsdM.add(usd);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- List<AeaBills> billsList = aeaBillsMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
- .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(AeaBills::getIsDeleted, 0)
|
|
|
- .eq(AeaBills::getMasterId, details.getId()));
|
|
|
- List<AeaBills> billsLists = billsList.stream().filter(e -> !e.getId().equals(aeaBills.getId())).collect(Collectors.toList());
|
|
|
- if (!billsLists.isEmpty()) {
|
|
|
- amountDrM = amountDrM.add(billsLists.stream().map(AeaBills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountCrM = amountCrM.add(billsLists.stream().map(AeaBills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountDrUsdM = amountDrUsdM.add(billsLists.stream().map(AeaBills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountCrUsdM = amountCrUsdM.add(billsLists.stream().map(AeaBills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountDrLocM = amountDrLocM.add(billsLists.stream().map(AeaBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- amountCrLocM = amountCrLocM.add(billsLists.stream().map(AeaBills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- quantityM = quantityM.add(billsLists.stream().map(AeaBills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- grossWeightM = grossWeightM.add(billsLists.stream().map(AeaBills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- measurementM = measurementM.add(billsLists.stream().map(AeaBills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- }
|
|
|
- amountDrM = amountDrM.add(amountDr);
|
|
|
- amountCrM = amountCrM.add(amountCr);
|
|
|
- amountDrUsdM = amountDrUsdM.add(amountDrUsd);
|
|
|
- amountCrUsdM = amountCrUsdM.add(amountCrUsd);
|
|
|
- amountDrLocM = amountDrLocM.add(amountDrLoc);
|
|
|
- amountCrLocM = amountCrLocM.add(amountCrLoc);
|
|
|
- //利润 = 收 - 付
|
|
|
- amountProfitM = amountDrM.subtract(amountCrM);
|
|
|
- amountProfitUsdM = amountDrUsdM.subtract(amountCrUsdM);
|
|
|
- amountDrLocM = amountDrLocM.add(bCurrencyService.converterCny("USD", amountDrUsdM, "D", "1")).add(amountDrM);
|
|
|
- amountCrLocM = amountCrLocM.add(bCurrencyService.converterCny("USD", amountCrUsdM, "C", "1")).add(amountCrM);
|
|
|
- amountProfitLocM = amountDrLocM.subtract(amountCrLocM);
|
|
|
- details.setAmountDr(amountDrM);
|
|
|
- details.setAmountCr(amountCrM);
|
|
|
- details.setAmountProfit(amountProfitM);
|
|
|
- details.setAmountDrUsd(amountDrUsdM);
|
|
|
- details.setAmountCrUsd(amountCrUsdM);
|
|
|
- details.setAmountProfitUsd(amountProfitUsdM);
|
|
|
- details.setAmountDrLoc(amountDrLocM);
|
|
|
- details.setAmountCrLoc(amountCrLocM);
|
|
|
- details.setAmountProfitLoc(amountProfitLocM);
|
|
|
- details.setQuantity(quantityM);
|
|
|
- details.setGrossWeight(grossWeightM);
|
|
|
- details.setMeasurement(measurementM);
|
|
|
- aeaBillsMapper.updateById(details);
|
|
|
- }
|
|
|
- }
|
|
|
- //利润 = 收 - 付
|
|
|
- amountProfit = amountDr.subtract(amountCr);
|
|
|
- amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
- amountDrLoc = amountDrLoc.add(bCurrencyService.converterCny("USD", amountDrUsd, "D", "1")).add(amountDr);
|
|
|
- amountCrLoc = amountCrLoc.add(bCurrencyService.converterCny("USD", amountCrUsd, "C", "1")).add(amountCr);
|
|
|
- amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
- aeaBills.setAmountDr(amountDr);
|
|
|
- aeaBills.setAmountCr(amountCr);
|
|
|
- aeaBills.setAmountProfit(amountProfit);
|
|
|
- aeaBills.setAmountDrUsd(amountDrUsd);
|
|
|
- aeaBills.setAmountCrUsd(amountCrUsd);
|
|
|
- aeaBills.setAmountProfitUsd(amountProfitUsd);
|
|
|
- aeaBills.setAmountDrLoc(amountDrLoc);
|
|
|
- aeaBills.setAmountCrLoc(amountCrLoc);
|
|
|
- aeaBills.setAmountProfitLoc(amountProfitLoc);
|
|
|
- aeaBillsMapper.updateById(aeaBills);
|
|
|
- } else if ("BGSE".equals(list.get(0).getBusinessType()) || "BGSI".equals(list.get(0).getBusinessType())
|
|
|
- || "BGAE".equals(list.get(0).getBusinessType()) || "BGAI".equals(list.get(0).getBusinessType())) {
|
|
|
- CustomsDeclaration customsDeclaration = customsDeclarationMapper.selectById(list.get(0).getPid());
|
|
|
- //利润 = 收 - 付
|
|
|
- amountProfit = amountDr.subtract(amountCr);
|
|
|
- amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
- amountDrLoc = amountDrLoc.add(bCurrencyService.converterCny("USD", amountDrUsd, "D", "1")).add(amountDr);
|
|
|
- amountCrLoc = amountCrLoc.add(bCurrencyService.converterCny("USD", amountCrUsd, "C", "1")).add(amountCr);
|
|
|
- amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
- customsDeclaration.setAmountDr(amountDr);
|
|
|
- customsDeclaration.setAmountCr(amountCr);
|
|
|
- customsDeclaration.setAmountProfit(amountProfit);
|
|
|
- customsDeclaration.setAmountDrUsd(amountDrUsd);
|
|
|
- customsDeclaration.setAmountCrUsd(amountCrUsd);
|
|
|
- customsDeclaration.setAmountProfitUsd(amountProfitUsd);
|
|
|
- customsDeclaration.setAmountDrLoc(amountDrLoc);
|
|
|
- customsDeclaration.setAmountCrLoc(amountCrLoc);
|
|
|
- customsDeclaration.setAmountProfitLoc(amountProfitLoc);
|
|
|
- customsDeclarationMapper.updateById(customsDeclaration);
|
|
|
}
|
|
|
} else {
|
|
|
R.fail("请选择明细");
|
|
|
@@ -912,15 +529,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R submitListOptimization(List<FeeCenter> list) {
|
|
|
- String deptId = "";
|
|
|
+ String deptId = AuthUtil.getDeptId();
|
|
|
String deptName = "";
|
|
|
- String branchId = deptUtils.getDeptPid() + "";
|
|
|
+ String branchId = AuthUtil.getDeptId();
|
|
|
//获取部门ids对应中文名
|
|
|
if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
|
|
|
- deptId = AuthUtil.getDeptId();
|
|
|
- R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
|
|
|
+ R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
|
|
|
if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
- deptName = String.join(",", res.getData());
|
|
|
+ deptName = res.getData();
|
|
|
}
|
|
|
}
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
@@ -1043,55 +659,6 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
corpIds = feeCenterList.stream().map(FeeCenter::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
}
|
|
|
}
|
|
|
- } else if ("KYCK".equals(type) || "KYJK".equals(type)) {
|
|
|
- AeaBills bills = aeaBillsMapper.selectById(billId);
|
|
|
- if (bills != null) {
|
|
|
- if ("MM".equals(bills.getBillType())) {
|
|
|
- List<AeaBills> billsList = aeaBillsMapper.selectList(new LambdaQueryWrapper<AeaBills>()
|
|
|
- .eq(AeaBills::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(AeaBills::getIsDeleted, 0)
|
|
|
- .eq(AeaBills::getMasterId, bills.getId())
|
|
|
- .eq(AeaBills::getMasterBillNo, bills.getBillNo()));
|
|
|
- if (!billsList.isEmpty()) {
|
|
|
- List<Long> billIds;
|
|
|
- billIds = billsList.stream().map(AeaBills::getId).collect(Collectors.toList());
|
|
|
- if (!billIds.isEmpty()) {
|
|
|
- billIds.add(billId);
|
|
|
- } else {
|
|
|
- billIds = new ArrayList<>();
|
|
|
- billIds.add(billId);
|
|
|
- }
|
|
|
- List<FeeCenter> feeCenterList = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
|
|
|
- .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(FeeCenter::getIsDeleted, 0)
|
|
|
- .eq(FeeCenter::getDc, dc)
|
|
|
- .in(FeeCenter::getPid, billIds));
|
|
|
- if (!feeCenterList.isEmpty()) {
|
|
|
- corpIds = feeCenterList.stream().map(FeeCenter::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- List<FeeCenter> feeCenterList = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
|
|
|
- .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(FeeCenter::getIsDeleted, 0)
|
|
|
- .eq(FeeCenter::getDc, dc)
|
|
|
- .eq(FeeCenter::getPid, billId));
|
|
|
- if (!feeCenterList.isEmpty()) {
|
|
|
- corpIds = feeCenterList.stream().map(FeeCenter::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
- }
|
|
|
- }
|
|
|
- } else if ("BGSE".equals(type) || "BGSI".equals(type) || "BGAI".equals(type) || "BGAE".equals(type)) {
|
|
|
- CustomsDeclaration bills = customsDeclarationMapper.selectById(billId);
|
|
|
- if (bills != null) {
|
|
|
- List<FeeCenter> feeCenterList = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
|
|
|
- .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(FeeCenter::getIsDeleted, 0)
|
|
|
- .eq(FeeCenter::getDc, dc)
|
|
|
- .eq(FeeCenter::getPid, billId));
|
|
|
- if (!feeCenterList.isEmpty()) {
|
|
|
- corpIds = feeCenterList.stream().map(FeeCenter::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
- }
|
|
|
- }
|
|
|
} else if ("AMEND".equals(type)) {
|
|
|
Amends amends = amendsMapper.selectById(billId);
|
|
|
if (amends != null) {
|
|
|
@@ -1119,15 +686,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R submitBox(FeeCenter feeCenter) {
|
|
|
- String deptId = "";
|
|
|
+ String deptId = AuthUtil.getDeptId();
|
|
|
String deptName = "";
|
|
|
- String branchId = deptUtils.getDeptPid() + "";
|
|
|
+ String branchId = AuthUtil.getDeptId();
|
|
|
//获取部门ids对应中文名
|
|
|
- if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
|
|
|
- deptId = AuthUtil.getDeptId();
|
|
|
- R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
|
|
|
+ if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
|
|
|
+ R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
|
|
|
if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
- deptName = String.join(",", res.getData());
|
|
|
+ deptName = res.getData();
|
|
|
}
|
|
|
}
|
|
|
if (ObjectUtils.isNotNull(feeCenter.getBillCorpId())) {
|
|
|
@@ -1165,15 +731,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R submitListBox(List<FeeCenter> list) {
|
|
|
- String deptId = "";
|
|
|
+ String deptId = AuthUtil.getDeptId();
|
|
|
String deptName = "";
|
|
|
- String branchId = deptUtils.getDeptPid() + "";
|
|
|
+ String branchId = AuthUtil.getDeptId();
|
|
|
//获取部门ids对应中文名
|
|
|
if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
|
|
|
- deptId = AuthUtil.getDeptId();
|
|
|
- R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
|
|
|
+ R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
|
|
|
if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
- deptName = String.join(",", res.getData());
|
|
|
+ deptName = res.getData();
|
|
|
}
|
|
|
}
|
|
|
List<BCorps> bCorpsList = bCorpsService.list(new LambdaQueryWrapper<BCorps>()
|
|
|
@@ -1274,4 +839,199 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
|
|
|
return R.data(feeCenterList);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R templateImportBatch(String billsIds, String templateId, String dc) {
|
|
|
+ List<FeesTemplateItems> feesTemplateItemsList = feesTemplateItemsService.list(new LambdaQueryWrapper<FeesTemplateItems>()
|
|
|
+ .eq(FeesTemplateItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeesTemplateItems::getIsDeleted, 0)
|
|
|
+ .eq(FeesTemplateItems::getPid, templateId)
|
|
|
+ .eq(FeesTemplateItems::getDc, dc));
|
|
|
+ if (feesTemplateItemsList.isEmpty()) {
|
|
|
+ throw new RuntimeException("未查到模板明细");
|
|
|
+ }
|
|
|
+ List<FeesTemplateSonItems> sonItemsList = feesTemplateSonItemsService.list(new LambdaQueryWrapper<FeesTemplateSonItems>()
|
|
|
+ .eq(FeesTemplateSonItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeesTemplateSonItems::getIsDeleted, 0)
|
|
|
+ .in(FeesTemplateSonItems::getPpid, feesTemplateItemsList.stream().map(FeesTemplateItems::getId).collect(Collectors.toList()))
|
|
|
+ .eq(FeesTemplateSonItems::getDc, dc));
|
|
|
+ if (sonItemsList.isEmpty()) {
|
|
|
+ throw new RuntimeException("未查到模板明细");
|
|
|
+ }
|
|
|
+ List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getBranchId, AuthUtil.getTenantId())
|
|
|
+ .apply("find_in_set(id,'" + billsIds + "')"));
|
|
|
+ if (billsList.isEmpty()) {
|
|
|
+ throw new RuntimeException("未查到单据信息");
|
|
|
+ }
|
|
|
+ List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
|
|
|
+ .eq(PreContainers::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PreContainers::getIsDeleted, 0)
|
|
|
+ .apply("find_in_set(pid,'" + billsIds + "')"));
|
|
|
+ List<FeeCenter> list = new ArrayList<>();
|
|
|
+ StringBuilder text = new StringBuilder();
|
|
|
+ for (Bills bills : billsList) {
|
|
|
+ List<PreContainers> preContainers = new ArrayList<>();
|
|
|
+ if (!preContainersList.isEmpty()) {
|
|
|
+ preContainers = preContainersList.stream().filter(e -> e.getPid().equals(bills.getId())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ int count = 1;
|
|
|
+ for (FeesTemplateSonItems items : sonItemsList) {
|
|
|
+ FeesTemplateItems templateItems = feesTemplateItemsList.stream().filter(e -> e.getId().equals(items.getPpid()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ if (templateItems == null) {
|
|
|
+ throw new RuntimeException("模版数据错误,请联系管理员");
|
|
|
+ }
|
|
|
+ FeeCenter feeCenter = new FeeCenter();
|
|
|
+ feeCenter.setElementsCnName(templateItems.getElementsCnName());
|
|
|
+ feeCenter.setElementsEnName(templateItems.getElementsEnName());
|
|
|
+ feeCenter.setElementsId(templateItems.getElementsId());
|
|
|
+ feeCenter.setElementsCode(templateItems.getElementsCode());
|
|
|
+ feeCenter.setPid(bills.getId());
|
|
|
+ feeCenter.setCntrNo(bills.getQuantityCntrTypesDescr());
|
|
|
+ feeCenter.setBillNo(bills.getBillNo());
|
|
|
+ feeCenter.setBusinessType(bills.getBusinessType());
|
|
|
+ feeCenter.setBillType(bills.getBillType());
|
|
|
+ feeCenter.setBillDate(bills.getBillDate());
|
|
|
+ feeCenter.setBillCorpId(bills.getCorpId());
|
|
|
+ feeCenter.setBillCorpCnName(bills.getCorpCnName());
|
|
|
+ feeCenter.setBillCorpEnName(bills.getCorpEnName());
|
|
|
+ feeCenter.setBillShortName(bills.getCorpCnName());
|
|
|
+ feeCenter.setLineId(bills.getLineId());
|
|
|
+ feeCenter.setLineCnName(bills.getLineCnName());
|
|
|
+ feeCenter.setLineEnName(bills.getLineEnName());
|
|
|
+ feeCenter.setVesselId(bills.getVesselId());
|
|
|
+ feeCenter.setVesselCnName(bills.getVesselCnName());
|
|
|
+ feeCenter.setVesselEnName(bills.getVesselEnName());
|
|
|
+ feeCenter.setVoyageNo(bills.getVoyageNo());
|
|
|
+ feeCenter.setMblno(bills.getMblno());
|
|
|
+ feeCenter.setHblno(bills.getHblno());
|
|
|
+ feeCenter.setEtd(bills.getEtd());
|
|
|
+ feeCenter.setEta(bills.getEta());
|
|
|
+ feeCenter.setPolId(bills.getPolId());
|
|
|
+ feeCenter.setPolCode(bills.getPolCode());
|
|
|
+ feeCenter.setPolCnName(bills.getPolCnName());
|
|
|
+ feeCenter.setPolEnName(bills.getPolEnName());
|
|
|
+ feeCenter.setPodId(bills.getPodId());
|
|
|
+ feeCenter.setPodCode(bills.getPodCode());
|
|
|
+ feeCenter.setPodCnName(bills.getPodCnName());
|
|
|
+ feeCenter.setPodEnName(bills.getPodEnName());
|
|
|
+ feeCenter.setDc(items.getDc());
|
|
|
+ feeCenter.setPaymode(bills.getMpaymode());
|
|
|
+ feeCenter.setSort(count);
|
|
|
+ count++;
|
|
|
+ if ("客户".equals(templateItems.getCorpType())) {
|
|
|
+ feeCenter.setCorpId(bills.getCorpId());
|
|
|
+ feeCenter.setCorpCnName(bills.getCorpCnName());
|
|
|
+ feeCenter.setCorpEnName(bills.getCorpEnName());
|
|
|
+ feeCenter.setShortName(bills.getShortName());
|
|
|
+ } else if ("船公司".equals(templateItems.getCorpType())) {
|
|
|
+ feeCenter.setCorpId(bills.getCarrierId());
|
|
|
+ feeCenter.setCorpCnName(bills.getCarrierCnName());
|
|
|
+ feeCenter.setCorpEnName(bills.getCarrierEnName());
|
|
|
+ feeCenter.setShortName(bills.getCarrierCnName());
|
|
|
+ } else if ("场站".equals(templateItems.getCorpType())) {
|
|
|
+ feeCenter.setCorpId(bills.getCyId());
|
|
|
+ feeCenter.setCorpCnName(bills.getCyCnName());
|
|
|
+ feeCenter.setCorpEnName(bills.getCyEnName());
|
|
|
+ feeCenter.setShortName(bills.getCyCnName());
|
|
|
+ } else if ("订舱代理".equals(templateItems.getCorpType())) {
|
|
|
+ feeCenter.setCorpId(bills.getBookingAgentId());
|
|
|
+ feeCenter.setCorpCnName(bills.getBookingAgentCnName());
|
|
|
+ feeCenter.setCorpEnName(bills.getBookingAgentEnName());
|
|
|
+ feeCenter.setShortName(bills.getBookingAgentCnName());
|
|
|
+ } else if ("收货代理".equals(templateItems.getCorpType())) {
|
|
|
+ feeCenter.setCorpId(bills.getMconsigneeId());
|
|
|
+ feeCenter.setCorpCnName(bills.getMconsigneeCnName());
|
|
|
+ feeCenter.setCorpEnName(bills.getMconsigneeEnName());
|
|
|
+ feeCenter.setShortName(bills.getMconsigneeCnName());
|
|
|
+ } else if ("MBL通知人".equals(templateItems.getCorpType())) {
|
|
|
+ feeCenter.setCorpId(bills.getMnotifyId());
|
|
|
+ feeCenter.setCorpCnName(bills.getMnotifyCnName());
|
|
|
+ feeCenter.setCorpEnName(bills.getMnotifyEnName());
|
|
|
+ feeCenter.setShortName(bills.getMnotifyCnName());
|
|
|
+ } else {
|
|
|
+ feeCenter.setCorpId(templateItems.getCorpId());
|
|
|
+ feeCenter.setCorpCnName(templateItems.getCorpCnName());
|
|
|
+ feeCenter.setCorpEnName(templateItems.getCorpEnName());
|
|
|
+ feeCenter.setShortName(templateItems.getCorpCnName());
|
|
|
+ }
|
|
|
+ feeCenter.setFeeId(items.getFeeId());
|
|
|
+ feeCenter.setFeeCode(items.getFeeCode());
|
|
|
+ feeCenter.setFeeCnName(items.getFeeCnName());
|
|
|
+ feeCenter.setFeeEnName(items.getFeeEnName());
|
|
|
+ feeCenter.setUnitNo(items.getUnitNo());
|
|
|
+ feeCenter.setPrice(items.getSalesPrice());
|
|
|
+ feeCenter.setCurCode(items.getCurCode());
|
|
|
+ if (ObjectUtils.isNotNull(feeCenter.getCurCode())) {
|
|
|
+ BCurrency bCurrency = new BCurrency();
|
|
|
+ bCurrency.setDate(bills.getEtd());
|
|
|
+ bCurrency.setDc(items.getDc());
|
|
|
+ List<BCurrency> bCurrencyList = bCurrencyService.getExrate(bCurrency);
|
|
|
+ if (!bCurrencyList.isEmpty()) {
|
|
|
+ BCurrency currency = bCurrencyList.stream().filter(e -> e.getCode().equals(feeCenter.getCurCode())).findFirst().orElse(null);
|
|
|
+ if (currency != null) {
|
|
|
+ feeCenter.setExrate(currency.getExrate());
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("未找到汇率信息");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ("按箱型".equals(items.getQuantityRule())) {
|
|
|
+ if (preContainers.isEmpty()) {
|
|
|
+ text.append("费用:").append(items.getFeeCnName()).append("未找到集装箱信息!");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Integer quantity = preContainers.stream().filter(e -> items.getUnitNo().equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).reduce(0, Integer::sum);
|
|
|
+ if (quantity == 0) {
|
|
|
+ text.append("费用:").append(items.getFeeCnName()).append("集装箱数量为零!");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ feeCenter.setQuantity(new BigDecimal(quantity + ""));
|
|
|
+ feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
|
|
|
+ } else if ("按票".equals(items.getQuantityRule())) {
|
|
|
+ feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
+ feeCenter.setAmount(feeCenter.getPrice().multiply(new BigDecimal("1")));
|
|
|
+ } else if ("按重量".equals(items.getQuantityRule())) {
|
|
|
+ feeCenter.setQuantity(bills.getGrossWeight());
|
|
|
+ feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
|
|
|
+ } else if ("按TEU".equals(items.getQuantityRule())) {
|
|
|
+ if (preContainers.isEmpty()) {
|
|
|
+ text.append("费用:").append(items.getFeeCnName()).append("未找到集装箱信息!");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ BigDecimal quantityTeu = preContainers.stream().filter(e -> items.getUnitNo().equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Integer quantityGP = preContainers.stream().filter(e -> items.getUnitNo().equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).mapToInt(Integer::intValue).sum();
|
|
|
+ BigDecimal quantity = quantityTeu.multiply(new BigDecimal(quantityGP + ""));
|
|
|
+ if (quantity.compareTo(new BigDecimal("0")) == 0) {
|
|
|
+ text.append("费用:").append(items.getFeeCnName()).append("集装箱teu或数量为零!");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ feeCenter.setQuantity(new BigDecimal(quantity + ""));
|
|
|
+ feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
|
|
|
+ } else if ("按尺码".equals(items.getQuantityRule())) {
|
|
|
+ feeCenter.setQuantity(bills.getMeasurement());
|
|
|
+ feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
|
|
|
+ } else {
|
|
|
+ feeCenter.setQuantity(new BigDecimal("1"));
|
|
|
+ feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNull(feeCenter.getAmount())) {
|
|
|
+ feeCenter.setAmount(new BigDecimal("0"));
|
|
|
+ }
|
|
|
+ list.add(feeCenter);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ this.saveOrUpdateBatch(list);
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(text.toString())) {
|
|
|
+ return R.data(list, text + "未导入!!!");
|
|
|
+ } else {
|
|
|
+ return R.data(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|