|
@ -30,6 +30,7 @@ import java.math.BigDecimal; |
|
|
import java.math.RoundingMode; |
|
|
import java.math.RoundingMode; |
|
|
import java.time.LocalDate; |
|
|
import java.time.LocalDate; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.Collections; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
@ -48,18 +49,45 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public List<BirRoiCostItemVo> queryRoiCostItems(BirRoiCostDTO param) { |
|
|
public List<BirRoiCostItemVo> queryRoiCostItems(BirRoiCostDTO param) { |
|
|
|
|
|
//实际金额
|
|
|
List<BirRoiCostItemVo> realDataList = baseMapper.queryRoiCostItems(param); |
|
|
List<BirRoiCostItemVo> realDataList = baseMapper.queryRoiCostItems(param); |
|
|
|
|
|
for (BirRoiCostItemVo itemVo : realDataList) { |
|
|
|
|
|
itemVo.setCostRealAmt(itemVo.getCostAmt()); |
|
|
|
|
|
itemVo.setCheckRealAmt(itemVo.getCheckAmt()); |
|
|
|
|
|
//实际金额使用核销金额
|
|
|
|
|
|
itemVo.setCostAmt(itemVo.getCheckAmt()); |
|
|
|
|
|
} |
|
|
|
|
|
//预估金额
|
|
|
List<BirRoiCostItemVo> forecastDataList = baseMapper.queryForecastRoiCostItems(param); |
|
|
List<BirRoiCostItemVo> forecastDataList = baseMapper.queryForecastRoiCostItems(param); |
|
|
|
|
|
|
|
|
//合并数据
|
|
|
//合并数据
|
|
|
for (BirRoiCostItemVo data1 : realDataList) { |
|
|
for (BirRoiCostItemVo data1 : realDataList) { |
|
|
for (BirRoiCostItemVo data2 : forecastDataList) { |
|
|
for (BirRoiCostItemVo data2 : forecastDataList) { |
|
|
if(data1.getYearMonth().equals(data2.getYearMonth())){ |
|
|
if(data1.getYearMonth().equals(data2.getYearMonth())){ |
|
|
|
|
|
//预估金额使用申请金额
|
|
|
data1.setCostAmt(data1.getCostAmt().add(data2.getCostAmt())); |
|
|
data1.setCostAmt(data1.getCostAmt().add(data2.getCostAmt())); |
|
|
data1.setCheckAmt(data1.getCheckAmt().add(data2.getCheckAmt())); |
|
|
//预估相加
|
|
|
|
|
|
data1.setPreAmt(data1.getPreAmt().add(data2.getPreAmt())); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//加入未为被命中的
|
|
|
|
|
|
List<BirRoiCostItemVo> allList = new ArrayList<>(); |
|
|
|
|
|
allList.addAll(realDataList); |
|
|
|
|
|
for (BirRoiCostItemVo data2 : forecastDataList) { |
|
|
|
|
|
boolean exist = false; |
|
|
|
|
|
for (BirRoiCostItemVo data1 : realDataList) { |
|
|
|
|
|
if(data1.getYearMonth().equals(data2.getYearMonth())){ |
|
|
|
|
|
exist = true; |
|
|
|
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
if(!exist){ |
|
|
|
|
|
allList.add(data2); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
return realDataList; |
|
|
return allList; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -134,6 +162,7 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa |
|
|
//防止空值
|
|
|
//防止空值
|
|
|
supplierCodeList.add("0"); |
|
|
supplierCodeList.add("0"); |
|
|
List<BirRoiCostItemVo> costItemVoList = this.queryRoiCostItems(costDTO); |
|
|
List<BirRoiCostItemVo> costItemVoList = this.queryRoiCostItems(costDTO); |
|
|
|
|
|
|
|
|
//发货单
|
|
|
//发货单
|
|
|
List<ErpDispatchSumVo> dispatchSumVos = null; |
|
|
List<ErpDispatchSumVo> dispatchSumVos = null; |
|
|
if(supplierCodeList.size()>1){ |
|
|
if(supplierCodeList.size()>1){ |
|
@ -141,15 +170,55 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa |
|
|
} |
|
|
} |
|
|
for (BirRoiCostItemVo costItemVo : costItemVoList) { |
|
|
for (BirRoiCostItemVo costItemVo : costItemVoList) { |
|
|
costItemVo.setDispatchAmt(BigDecimal.ZERO); |
|
|
costItemVo.setDispatchAmt(BigDecimal.ZERO); |
|
|
|
|
|
costItemVo.setDispatchAmt(costItemVo.getPreAmt()); |
|
|
if(dispatchSumVos!=null){ |
|
|
if(dispatchSumVos!=null){ |
|
|
for (ErpDispatchSumVo dispatchSumVo : dispatchSumVos) { |
|
|
for (ErpDispatchSumVo dispatchSumVo : dispatchSumVos) { |
|
|
if(dispatchSumVo.getYearMonth().equals(costItemVo.getYearMonth())){ |
|
|
if(dispatchSumVo.getYearMonth().equals(costItemVo.getYearMonth())){ |
|
|
costItemVo.setDispatchAmt(dispatchSumVo.getDispatchSumCost()); |
|
|
// 预估金额(后追加功能,发货金额=原发货金额+预估金额)
|
|
|
|
|
|
costItemVo.setDispatchAmt(dispatchSumVo.getDispatchSumCost().add(costItemVo.getPreAmt())); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//补充数据0的项
|
|
|
|
|
|
List<BirRoiCostItemVo> costItemVos = new ArrayList<>(); |
|
|
|
|
|
for (int i = startMonthNum; i <= currMonthNum; i++) { |
|
|
|
|
|
int month = Integer.parseInt((""+i).substring(4)); |
|
|
|
|
|
if(month>12){ |
|
|
|
|
|
i = startMonth.getYear()*100 + 100; |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
boolean isEmpty = true; |
|
|
|
|
|
for (BirRoiCostItemVo itemVo : costItemVoList) { |
|
|
|
|
|
if(itemVo.getYearMonth().equals(i)){ |
|
|
|
|
|
isEmpty = false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(isEmpty){ |
|
|
|
|
|
BigDecimal dispatchAmt = BigDecimal.ZERO; |
|
|
|
|
|
if(dispatchSumVos!=null){ |
|
|
|
|
|
for (ErpDispatchSumVo dispatchSumVo : dispatchSumVos) { |
|
|
|
|
|
if(dispatchSumVo.getYearMonth().equals(i)){ |
|
|
|
|
|
dispatchAmt = dispatchSumVo.getDispatchSumCost(); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
BirRoiCostItemVo itemVo = new BirRoiCostItemVo(); |
|
|
|
|
|
itemVo.setYearMonth(i); |
|
|
|
|
|
itemVo.setYearMonthDate(LocalDate.of(i/100,month,1)); |
|
|
|
|
|
itemVo.setCostAmt(BigDecimal.ZERO); |
|
|
|
|
|
itemVo.setCheckAmt(BigDecimal.ZERO); |
|
|
|
|
|
itemVo.setCostRealAmt(BigDecimal.ZERO); |
|
|
|
|
|
itemVo.setCheckRealAmt(BigDecimal.ZERO); |
|
|
|
|
|
itemVo.setReturnAmt(BigDecimal.ZERO); |
|
|
|
|
|
itemVo.setDispatchAmt(dispatchAmt); |
|
|
|
|
|
costItemVos.add(itemVo); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
costItemVoList.addAll(costItemVos); |
|
|
|
|
|
Collections.sort(costItemVoList,(a,b)->b.getYearMonth()-a.getYearMonth()); |
|
|
return costItemVoList; |
|
|
return costItemVoList; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|