|
@@ -18,7 +18,6 @@ import com.fjhx.account.entity.account.vo.AccountRequestFundsDetailVo;
|
|
|
import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
|
|
|
import com.fjhx.account.entity.tax.po.TaxRefundDetails;
|
|
|
import com.fjhx.account.service.account.AccountManagementService;
|
|
|
-import com.fjhx.account.service.account.AccountPaymentService;
|
|
|
import com.fjhx.account.service.account.AccountRequestFundsDetailService;
|
|
|
import com.fjhx.account.service.tax.TaxRefundDetailsService;
|
|
|
import com.fjhx.area.service.SetCustomizeAreaId;
|
|
@@ -51,7 +50,6 @@ import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
|
|
|
import com.fjhx.purchase.entity.quality.po.QualityDetail;
|
|
|
import com.fjhx.purchase.service.arrival.ArrivalDetailService;
|
|
|
import com.fjhx.purchase.service.pay.PayDetailService;
|
|
|
-import com.fjhx.purchase.service.pay.PayService;
|
|
|
import com.fjhx.purchase.service.purchase.PurchaseDetailService;
|
|
|
import com.fjhx.purchase.service.purchase.PurchaseService;
|
|
|
import com.fjhx.purchase.service.quality.QualityDetailService;
|
|
@@ -68,9 +66,9 @@ import com.fjhx.sale.entity.contract.po.ContractProject;
|
|
|
import com.fjhx.sale.entity.contract.po.ContractShipment;
|
|
|
import com.fjhx.sale.entity.contract.vo.*;
|
|
|
import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
|
|
|
+import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
|
|
|
import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
|
|
|
import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
|
|
|
-import com.fjhx.sale.entity.sample.po.Sample;
|
|
|
import com.fjhx.sale.mapper.contract.ContractMapper;
|
|
|
import com.fjhx.sale.service.claim.ClaimContractService;
|
|
|
import com.fjhx.sale.service.contract.ContractProductService;
|
|
@@ -242,7 +240,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
|
|
|
IWrapper<Contract> wrapper = getWrapper();
|
|
|
wrapper.in("t1", Contract::getBuyCorporationId, authIdList);
|
|
|
- wrapper.ne("t1", Contract::getIsShow,1);
|
|
|
+ wrapper.ne("t1", Contract::getIsShow, 1);
|
|
|
return pageCommon(dto, wrapper);
|
|
|
}
|
|
|
|
|
@@ -410,7 +408,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
(v.getCommission() == null ? BigDecimal.ZERO : v.getCommission().multiply(new BigDecimal(map.getOrDefault(v.getCommissionCurrency(), BigDecimal.ONE).toString()))).add
|
|
|
(v.getOther() == null ? BigDecimal.ZERO : v.getOther().multiply(new BigDecimal(map.getOrDefault(v.getOtherCurrency(), BigDecimal.ONE).toString()))).add
|
|
|
(v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
|
|
|
- );
|
|
|
+ );
|
|
|
//处理退税金额
|
|
|
handleRefundTax(v);
|
|
|
v.setRmbContractAmount(v.getAmount().multiply(new BigDecimal(map.getOrDefault(v.getCurrency(), BigDecimal.ONE).toString())));
|
|
@@ -433,14 +431,14 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
//计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
|
|
|
v.setExpenditureAmount(
|
|
|
v.getTrailerFee() == null ? BigDecimal.ZERO : v.getTrailerFee().add
|
|
|
- (v.getCustomsFee() == null ? BigDecimal.ZERO : v.getCustomsFee()).add
|
|
|
- (v.getAgencyFee() == null ? BigDecimal.ZERO : v.getAgencyFee()).add
|
|
|
- (v.getPortMixedFee() == null ? BigDecimal.ZERO : v.getPortMixedFee()).add
|
|
|
- (v.getInspectionRedPack() == null ? BigDecimal.ZERO : v.getInspectionRedPack()).add
|
|
|
- (v.getCommission() == null ? BigDecimal.ZERO : v.getCommission()).add
|
|
|
- (v.getOther() == null ? BigDecimal.ZERO : v.getOther()).add
|
|
|
- (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
|
|
|
- );
|
|
|
+ (v.getCustomsFee() == null ? BigDecimal.ZERO : v.getCustomsFee()).add
|
|
|
+ (v.getAgencyFee() == null ? BigDecimal.ZERO : v.getAgencyFee()).add
|
|
|
+ (v.getPortMixedFee() == null ? BigDecimal.ZERO : v.getPortMixedFee()).add
|
|
|
+ (v.getInspectionRedPack() == null ? BigDecimal.ZERO : v.getInspectionRedPack()).add
|
|
|
+ (v.getCommission() == null ? BigDecimal.ZERO : v.getCommission()).add
|
|
|
+ (v.getOther() == null ? BigDecimal.ZERO : v.getOther()).add
|
|
|
+ (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
|
|
|
+ );
|
|
|
//处理退税金额
|
|
|
handleRefundTax(v);
|
|
|
v.setRmbContractAmount(v.getAmount().multiply(rate));
|
|
@@ -485,13 +483,13 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
List<Long> contractIds = list.stream().map(ContractBudgetVo::getContractId).collect(Collectors.toList());
|
|
|
//通过合同ID查询到退税数据
|
|
|
List<TaxRefundDetails> refundDetails = taxRefundDetailsService.getSumMoneyByContractIds(contractIds);
|
|
|
- Map<Long,List<TaxRefundDetails>> refundDetailsMap = refundDetails.stream().collect(Collectors.groupingBy(TaxRefundDetails::getContractId));
|
|
|
+ Map<Long, List<TaxRefundDetails>> refundDetailsMap = refundDetails.stream().collect(Collectors.groupingBy(TaxRefundDetails::getContractId));
|
|
|
//通过合同ID查询到到账认领数据
|
|
|
- List<ClaimContract> claimContractList = claimContractService.list(Wrappers.<ClaimContract>query().lambda().in(ClaimContract::getContractId,contractIds));
|
|
|
- Map<Long,List<ClaimContract>> claimMap = claimContractList.stream().collect(Collectors.groupingBy(ClaimContract::getContractId));
|
|
|
+ List<ClaimContract> claimContractList = claimContractService.list(Wrappers.<ClaimContract>query().lambda().in(ClaimContract::getContractId, contractIds));
|
|
|
+ Map<Long, List<ClaimContract>> claimMap = claimContractList.stream().collect(Collectors.groupingBy(ClaimContract::getContractId));
|
|
|
//通过合同ID查询到采购合同
|
|
|
- List<EhsdPurchase> purchaseList = ehsdPurchaseService.list(Wrappers.<EhsdPurchase>query().lambda().in(EhsdPurchase::getDataResourceId,contractIds));
|
|
|
- Map<Long,List<EhsdPurchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(EhsdPurchase::getDataResourceId));
|
|
|
+ List<EhsdPurchase> purchaseList = ehsdPurchaseService.list(Wrappers.<EhsdPurchase>query().lambda().in(EhsdPurchase::getDataResourceId, contractIds));
|
|
|
+ Map<Long, List<EhsdPurchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(EhsdPurchase::getDataResourceId));
|
|
|
for (ContractBudgetVo v : list) {
|
|
|
v.setOtherIncomeAmount(BigDecimal.ZERO);//暂时先设置其他收入为0
|
|
|
if (StringUtils.isNotEmpty(v.getCurrencyRateJson())) {//如果此条合同有汇率了
|
|
@@ -504,11 +502,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
* 处理退税金额
|
|
|
*/
|
|
|
v.setRefundableAmount(BigDecimal.ZERO);
|
|
|
- List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(v.getContractId(),null);
|
|
|
- if(CollectionUtils.isNotEmpty(rList)){
|
|
|
+ List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(v.getContractId(), null);
|
|
|
+ if (CollectionUtils.isNotEmpty(rList)) {
|
|
|
BigDecimal taxReturnMoney = rList.stream().map(taxRefundDetails -> {
|
|
|
//获取汇率
|
|
|
- BigDecimal rate = assignCurrencyRatesMap.getOrDefault(taxRefundDetails.getCurrency(),BigDecimal.ONE);
|
|
|
+ BigDecimal rate = assignCurrencyRatesMap.getOrDefault(taxRefundDetails.getCurrency(), BigDecimal.ONE);
|
|
|
// 获取认领金额
|
|
|
BigDecimal money = taxRefundDetails.getAmount();
|
|
|
// 返回兑人民币后金额
|
|
@@ -517,9 +515,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
v.setRefundableAmount(taxReturnMoney);
|
|
|
}
|
|
|
//处理到账总金额
|
|
|
- v.setSumClaimMoney(getSumClaimMoney(claimMap.getOrDefault(v.getContractId(),null),assignCurrencyRatesMap));
|
|
|
+ v.setSumClaimMoney(getSumClaimMoney(claimMap.getOrDefault(v.getContractId(), null), assignCurrencyRatesMap));
|
|
|
//采购合同总金额
|
|
|
- getSumPurchaseContractMoney(v,purchaseMap.getOrDefault(v.getContractId(),null),assignCurrencyRatesMap);
|
|
|
+ getSumPurchaseContractMoney(v, purchaseMap.getOrDefault(v.getContractId(), null), assignCurrencyRatesMap);
|
|
|
//支出费用
|
|
|
this.getGroupTypeMoney(v, assignCurrencyRatesMap);
|
|
|
} else {
|
|
@@ -528,8 +526,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
* 处理退税金额
|
|
|
*/
|
|
|
v.setRefundableAmount(BigDecimal.ZERO);
|
|
|
- List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(v.getContractId(),null);
|
|
|
- if(CollectionUtils.isNotEmpty(rList)){
|
|
|
+ List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(v.getContractId(), null);
|
|
|
+ if (CollectionUtils.isNotEmpty(rList)) {
|
|
|
BigDecimal taxReturnMoney = rList.stream().map(taxRefundDetails -> {
|
|
|
//获取汇率
|
|
|
BigDecimal rate = taxRefundDetails.getRate();
|
|
@@ -541,9 +539,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
v.setRefundableAmount(taxReturnMoney);
|
|
|
}
|
|
|
//处理到账总金额
|
|
|
- v.setSumClaimMoney(getSumClaimMoney(claimMap.getOrDefault(v.getContractId(),null),null));
|
|
|
+ v.setSumClaimMoney(getSumClaimMoney(claimMap.getOrDefault(v.getContractId(), null), null));
|
|
|
//采购合同总金额
|
|
|
- getSumPurchaseContractMoney(v,purchaseMap.getOrDefault(v.getContractId(),null),null);
|
|
|
+ getSumPurchaseContractMoney(v, purchaseMap.getOrDefault(v.getContractId(), null), null);
|
|
|
//支出费用
|
|
|
this.getGroupTypeMoney(v, null);
|
|
|
}
|
|
@@ -565,9 +563,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
//计算毛利 收入-支出
|
|
|
v.setGross(v.getIncomeAmount().subtract(v.getExpenditureAmount()));
|
|
|
//计算毛利率 毛利/收入
|
|
|
- if(v.getGross().compareTo(BigDecimal.ZERO)==0){
|
|
|
+ if (v.getGross().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
v.setGrossRate(BigDecimal.ZERO);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
v.setGrossRate(v.getGross().divide(v.getIncomeAmount(), RoundingMode.CEILING).multiply(new BigDecimal("100")));
|
|
|
}
|
|
|
}
|
|
@@ -608,6 +606,24 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
item.setProductCode(product.getCode());
|
|
|
item.setProductUnit(product.getUnit());
|
|
|
});
|
|
|
+ //重新赋值待采购数量
|
|
|
+ List<Long> contractProductIds = contractProductList.stream().map(ContractProduct::getId).collect(Collectors.toList());
|
|
|
+ List<EhsdPurchaseProduct> purchaseProducts = ehsdPurchaseProductService.getPurchaseProductByContractProductIds(contractProductIds);
|
|
|
+ if (ObjectUtil.isNotEmpty(purchaseProducts)) {
|
|
|
+ Map<Long, List<EhsdPurchaseProduct>> collect = purchaseProducts.stream()
|
|
|
+ .filter(item->ObjectUtil.isNotEmpty(item.getDataResourceId()))
|
|
|
+ .collect(Collectors.groupingBy(EhsdPurchaseProduct::getDataResourceId));
|
|
|
+ for (ContractProduct contractProduct : contractProductList) {
|
|
|
+ List<EhsdPurchaseProduct> ehsdPurchaseProductList = collect.get(contractProduct.getId());
|
|
|
+ if (ObjectUtil.isEmpty(ehsdPurchaseProductList)) {
|
|
|
+ contractProduct.setExpendQuantity(BigDecimal.ZERO);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ BigDecimal purchaseQuantity = ehsdPurchaseProductList.stream().map(EhsdPurchaseProduct::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal subtract = contractProduct.getQuantity().subtract(purchaseQuantity);
|
|
|
+ contractProduct.setExpendQuantity(subtract);
|
|
|
+ }
|
|
|
+ }
|
|
|
result.setContractProductList(contractProductList);
|
|
|
|
|
|
List<ContractProject> contractProjectList = contractProjectService.list(q -> q.eq(ContractProject::getContractId, id));
|
|
@@ -1532,40 +1548,42 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
* @param assignCurrencyRatesMap 汇率JSON
|
|
|
* @return
|
|
|
*/
|
|
|
- private BigDecimal getSumClaimMoney(List<ClaimContract> claimContractList,Map<String, BigDecimal> assignCurrencyRatesMap) {
|
|
|
+ private BigDecimal getSumClaimMoney(List<ClaimContract> claimContractList, Map<String, BigDecimal> assignCurrencyRatesMap) {
|
|
|
BigDecimal sumClaimMoney = BigDecimal.ZERO;
|
|
|
- if(CollectionUtils.isEmpty(claimContractList)){
|
|
|
+ if (CollectionUtils.isEmpty(claimContractList)) {
|
|
|
return BigDecimal.ZERO;
|
|
|
}
|
|
|
- if(MapUtils.isNotEmpty(assignCurrencyRatesMap)){
|
|
|
+ if (MapUtils.isNotEmpty(assignCurrencyRatesMap)) {
|
|
|
for (ClaimContract c : claimContractList) {
|
|
|
- sumClaimMoney = sumClaimMoney.add(c.getMoney().multiply(assignCurrencyRatesMap.getOrDefault(c.getCurrency(),BigDecimal.ONE)));
|
|
|
+ sumClaimMoney = sumClaimMoney.add(c.getMoney().multiply(assignCurrencyRatesMap.getOrDefault(c.getCurrency(), BigDecimal.ONE)));
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
for (ClaimContract c : claimContractList) {
|
|
|
sumClaimMoney = sumClaimMoney.add(c.getMoney().multiply(c.getRate()));
|
|
|
}
|
|
|
}
|
|
|
return sumClaimMoney;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 统采购合同总金额
|
|
|
+ *
|
|
|
* @param v
|
|
|
* @param purchaseList
|
|
|
* @param assignCurrencyRatesMap 汇率JSON
|
|
|
* @return
|
|
|
*/
|
|
|
- private void getSumPurchaseContractMoney(ContractBudgetVo v,List<EhsdPurchase> purchaseList,Map<String, BigDecimal> assignCurrencyRatesMap) {
|
|
|
+ private void getSumPurchaseContractMoney(ContractBudgetVo v, List<EhsdPurchase> purchaseList, Map<String, BigDecimal> assignCurrencyRatesMap) {
|
|
|
BigDecimal purchaseSumMoney = BigDecimal.ZERO;
|
|
|
- if(CollectionUtils.isEmpty(purchaseList)){
|
|
|
+ if (CollectionUtils.isEmpty(purchaseList)) {
|
|
|
v.setSumPurchaseContractMoney(BigDecimal.ZERO);
|
|
|
v.setAccountPaid(BigDecimal.ZERO);
|
|
|
return;
|
|
|
}
|
|
|
List<Long> purchaseIds = purchaseList.stream().map(EhsdPurchase::getId).collect(Collectors.toList());
|
|
|
- if(MapUtils.isNotEmpty(assignCurrencyRatesMap)){
|
|
|
+ if (MapUtils.isNotEmpty(assignCurrencyRatesMap)) {
|
|
|
for (EhsdPurchase c : purchaseList) {
|
|
|
- purchaseSumMoney = purchaseSumMoney.add(c.getAmount().multiply(assignCurrencyRatesMap.getOrDefault(c.getCurrency(),BigDecimal.ONE)));
|
|
|
+ purchaseSumMoney = purchaseSumMoney.add(c.getAmount().multiply(assignCurrencyRatesMap.getOrDefault(c.getCurrency(), BigDecimal.ONE)));
|
|
|
}
|
|
|
/**
|
|
|
* 处理支付款金额
|
|
@@ -1574,7 +1592,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
if (CollectionUtils.isNotEmpty(payList)) {
|
|
|
BigDecimal payAmount = payList.stream().map(pay -> {
|
|
|
//获取汇率
|
|
|
- BigDecimal rate = assignCurrencyRatesMap.getOrDefault(pay.getCurrency(),BigDecimal.ONE);
|
|
|
+ BigDecimal rate = assignCurrencyRatesMap.getOrDefault(pay.getCurrency(), BigDecimal.ONE);
|
|
|
// 获取认领金额
|
|
|
BigDecimal money = pay.getAmount();
|
|
|
// 返回兑人民币后金额
|
|
@@ -1582,7 +1600,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
}).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
v.setAccountPaid(payAmount);
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
for (EhsdPurchase c : purchaseList) {
|
|
|
purchaseSumMoney = purchaseSumMoney.add(c.getAmount().multiply(c.getRate()));
|
|
|
}
|
|
@@ -1594,7 +1612,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
if (CollectionUtils.isNotEmpty(payList)) {
|
|
|
BigDecimal payAmount = payList.stream().map(pay -> {
|
|
|
//获取汇率
|
|
|
- BigDecimal rate = pay.getRate()==null?BigDecimal.ONE:pay.getRate();
|
|
|
+ BigDecimal rate = pay.getRate() == null ? BigDecimal.ONE : pay.getRate();
|
|
|
// 获取认领金额
|
|
|
BigDecimal money = pay.getAmount();
|
|
|
// 返回兑人民币后金额
|
|
@@ -1667,10 +1685,10 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
|
|
|
for (AccountRequestFundsDetailVo c : list) {
|
|
|
String costType = c.getCostType() == null ? "" : c.getCostType();
|
|
|
- BigDecimal rate ;
|
|
|
- if(MapUtils.isNotEmpty(currencyRatesMap)){
|
|
|
- rate = currencyRatesMap.getOrDefault(c.getCurrency(),null);
|
|
|
- }else{
|
|
|
+ BigDecimal rate;
|
|
|
+ if (MapUtils.isNotEmpty(currencyRatesMap)) {
|
|
|
+ rate = currencyRatesMap.getOrDefault(c.getCurrency(), null);
|
|
|
+ } else {
|
|
|
rate = c.getRate();
|
|
|
}
|
|
|
switch (costType) {
|
|
@@ -1764,6 +1782,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
|
|
|
/**
|
|
|
* 修改合同
|
|
|
+ *
|
|
|
* @param contract
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -1779,7 +1798,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
* @param v
|
|
|
*/
|
|
|
private void handleRefundTax(ContractBudgetVo v) {
|
|
|
- if(ObjectUtil.isNotEmpty(v.getEhsdSumAmount())){
|
|
|
+ if (ObjectUtil.isNotEmpty(v.getEhsdSumAmount())) {
|
|
|
// 税额/100
|
|
|
double d = 0.13;
|
|
|
//付货款 * 税额
|
|
@@ -1792,7 +1811,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
d1 = rt.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
String s1 = new BigDecimal(String.valueOf(d1)).toPlainString();
|
|
|
v.setRefundableAmount(new BigDecimal(s1));
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
v.setRefundableAmount(BigDecimal.ZERO);
|
|
|
}
|
|
|
|