Browse Source

台帐

contract
15989082884@163.com 2 years ago
parent
commit
72ff1773b4
  1. 31
      src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java
  2. 2
      src/main/java/com/qs/serve/modules/bir/entity/vo/BirAccountReportVo.java
  3. 14
      src/main/java/com/qs/serve/modules/bir/entity/vo/BirCenterCostRateItem.java
  4. 2
      src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java
  5. 99
      src/main/java/com/qs/serve/modules/bir/service/impl/BirReportAccountBookServiceImpl.java
  6. 4
      src/main/java/com/qs/serve/modules/goods/entity/dto/TbsCenterDto.java
  7. 1
      src/main/resources/mapper/bir/BirActivityCenterGoodsMapper.xml

31
src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java

@ -8,16 +8,16 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.entity.BirBaseActivity;
import com.qs.serve.modules.bir.entity.so.BirCostRoiSo; import com.qs.serve.modules.bir.entity.so.BirCostRoiSo;
import com.qs.serve.modules.bir.entity.vo.BirCenterCostRateItem; import com.qs.serve.modules.bir.entity.vo.*;
import com.qs.serve.modules.bir.entity.vo.BirCenterCostRateMain;
import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo;
import com.qs.serve.modules.bir.entity.vo.BirRoiVo;
import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService;
import com.qs.serve.modules.bir.service.BirBaseActivityService; import com.qs.serve.modules.bir.service.BirBaseActivityService;
import com.qs.serve.modules.bir.service.BirReportAccountBookService; import com.qs.serve.modules.bir.service.BirReportAccountBookService;
import com.qs.serve.modules.tbs.common.TbsCenterType;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
@ -95,9 +95,32 @@ public class BirRoiRateController {
*/ */
@GetMapping("/standingBook") @GetMapping("/standingBook")
public R<?> standingBookByCall(String type,String year){ public R<?> standingBookByCall(String type,String year){
if(!StringUtils.hasText(year) || !StringUtils.hasText(type)){
Assert.throwEx("参数不能为空!");
}
return R.ok(birReportAccountBookService.getReportAccountBookData(type,year)); return R.ok(birReportAccountBookService.getReportAccountBookData(type,year));
} }
/**
* 台账
* @return
*/
@GetMapping("/standingBookExport")
public R<?> standingBookExport(String year){
if(!StringUtils.hasText(year)){
Assert.throwEx("参数不能为空!");
}
List<BirAccountReportVo> vos = new ArrayList<>();
BirAccountReportVo center = birReportAccountBookService.getReportAccountBookData(TbsCenterType.center.name(),year);
BirAccountReportVo customer = birReportAccountBookService.getReportAccountBookData(TbsCenterType.customer.name(),year);
BirAccountReportVo saleRegion = birReportAccountBookService.getReportAccountBookData(TbsCenterType.saleRegion.name(),year);
BirAccountReportVo bizRegion = birReportAccountBookService.getReportAccountBookData(TbsCenterType.bizRegion.name(),year);
vos.add(center);
vos.add(customer);
vos.add(saleRegion);
vos.add(bizRegion);
return R.ok(vos);
}
/** /**
* 获取费率 * 获取费率

2
src/main/java/com/qs/serve/modules/bir/entity/vo/BirAccountReportVo.java

@ -18,4 +18,6 @@ public class BirAccountReportVo {
private BudgetPlanVo budgetPlanVo; private BudgetPlanVo budgetPlanVo;
private List<List<BirCenterCostRateMain>> itemList; private List<List<BirCenterCostRateMain>> itemList;
private String type;
} }

14
src/main/java/com/qs/serve/modules/bir/entity/vo/BirCenterCostRateItem.java

@ -3,6 +3,8 @@ package com.qs.serve.modules.bir.entity.vo;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -96,4 +98,16 @@ public class BirCenterCostRateItem {
this.targetRoiRate = map.get(headerPrefix+"目标费用率")==null?BigDecimal.ZERO:((BigDecimal) map.get(headerPrefix+"目标费用率")).multiply(BigDecimal.valueOf(100L)); this.targetRoiRate = map.get(headerPrefix+"目标费用率")==null?BigDecimal.ZERO:((BigDecimal) map.get(headerPrefix+"目标费用率")).multiply(BigDecimal.valueOf(100L));
} }
public BirCenterCostRateItem(List<BirCenterCostRateItem> itemData){
this.budgetAmt = itemData.stream().map(a->a.getBudgetAmt()).reduce(BigDecimal.ZERO,BigDecimal::add);
this.usedBudgetAmt = itemData.stream().map(a->a.getUsedBudgetAmt()).reduce(BigDecimal.ZERO,BigDecimal::add);
this.unUsedBudgetAmt = itemData.stream().map(a->a.getUnUsedBudgetAmt()).reduce(BigDecimal.ZERO,BigDecimal::add);
this.targetDispatchAmt = itemData.stream().map(a->a.getTargetDispatchAmt()).reduce(BigDecimal.ZERO,BigDecimal::add);
this.realDispatchAmt = itemData.stream().map(a->a.getRealDispatchAmt()).reduce(BigDecimal.ZERO,BigDecimal::add);
this.realRoiRate = this.realDispatchAmt.compareTo(BigDecimal.ZERO)==0?
BigDecimal.ZERO:this.usedBudgetAmt.divide(this.realDispatchAmt,4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100L));
this.targetRoiRate = this.targetDispatchAmt.compareTo(BigDecimal.ZERO)==0?
BigDecimal.ZERO:this.budgetAmt.divide(this.targetDispatchAmt,4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100L));
}
} }

2
src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java

@ -304,7 +304,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
BigDecimal currentReleaseAmount = activityReleaseAmt==null?BigDecimal.ZERO: BigDecimal currentReleaseAmount = activityReleaseAmt==null?BigDecimal.ZERO:
activityReleaseAmt activityReleaseAmt
.multiply(activityCenterGoods.getCenterGoodsRate()) .multiply(activityCenterGoods.getCenterGoodsRate())
.multiply(activityCenterGoods.getCenterGoodsRate()) .multiply(activityCenterGoods.getCenterRate())
.divide(new BigDecimal("10000"),BigDecimal.ROUND_DOWN); .divide(new BigDecimal("10000"),BigDecimal.ROUND_DOWN);
//当前CenterGoods分割项金额 //当前CenterGoods分割项金额
BigDecimal currentSplitAmount = activityCenterGoods.getCenterGoodsAmount(); BigDecimal currentSplitAmount = activityCenterGoods.getCenterGoodsAmount();

99
src/main/java/com/qs/serve/modules/bir/service/impl/BirReportAccountBookServiceImpl.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.bir.service.impl; package com.qs.serve.modules.bir.service.impl;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.HeaderOption; import com.qs.serve.common.model.dto.HeaderOption;
@ -70,14 +71,82 @@ public class BirReportAccountBookServiceImpl implements BirReportAccountBookServ
BirAccountReportVo vo = new BirAccountReportVo(); BirAccountReportVo vo = new BirAccountReportVo();
List<List<BirCenterCostRateMain>> itemDataList = new ArrayList<>(); vo.setType(type);
List<String> headerList = tbsScheduleItemMapper.getItemNames(year); List<String> headerList = tbsScheduleItemMapper.getItemNames(year);
if(headerList.size()==0){ List<List<BirCenterCostRateMain>> itemDataList = buildCostData(type,year,headerList);
if(itemDataList.size()>0) {
List<BirCenterCostRateMain> forSumItemData = itemDataList.stream().flatMap(List::stream).collect(Collectors.toList());
BirCenterCostRateMain allMainItem = buildSumData(forSumItemData);
allMainItem.getCenter2().setCenterName("合计");
if (type.equals(TbsCenterType.saleRegion.name()) || type.equals(TbsCenterType.bizRegion.name())) {
itemDataList.forEach(item -> {
BirCenterCostRateMain mainItem = buildSumData(item);
item.add(mainItem);
});
}
itemDataList.add(Arrays.asList(allMainItem));
}
LambdaQueryWrapper<TbsBudgetPlan> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetPlan::getBudgetYear,year);
TbsBudgetPlan tbsBudgetPlan = tbsBudgetPlanService.getOne(lqw);
BudgetPlanVo budgetPlanVo = new BudgetPlanVo();
CopierUtil.copy(tbsBudgetPlan,budgetPlanVo);
BigDecimal plannedAmount = tbsBudgetLogMapper.countPlannedBudgetAmount();
budgetPlanVo.setPlannedAmount(plannedAmount);
BigDecimal usedAmount = tbsBudgetLogMapper.countUsedBudgetAmount();
budgetPlanVo.setUsedAmout(usedAmount);
BigDecimal realSaleAmount = erpDispatchDataMapper.querySumCostAmt(Integer.parseInt(year+"01"),Integer.parseInt(year+"12"),null);
budgetPlanVo.setRealSaleAmount(realSaleAmount);
vo.setHeaderList(headerList);
vo.setItemList(itemDataList);
vo.setBudgetPlanVo(budgetPlanVo);
return vo; return vo;
} }
private BirCenterCostRateMain buildSumData(List<BirCenterCostRateMain> item){
BirCenterCostRateMain mainItem = new BirCenterCostRateMain();
//年度合计
List<BirCenterCostRateItem> yearInfos = item.stream().map(a->a.getYearInfo()).collect(Collectors.toList());
BirCenterCostRateItem sumYearInfo = new BirCenterCostRateItem(yearInfos);
mainItem.setYearInfo(sumYearInfo);
List<BirCenterCostRateItem> sumSeasonInfoList = new ArrayList<>();
//周期合计
for(int i=0;i<item.get(0).getSeasonList().size();i++) {
int finalI = i;
List<BirCenterCostRateItem> seasonInfos = item.stream().map(a->a.getSeasonList().get(finalI)).collect(Collectors.toList());
BirCenterCostRateItem seasonInfo = new BirCenterCostRateItem(seasonInfos);
sumSeasonInfoList.add(seasonInfo);
}
mainItem.setSeasonList(sumSeasonInfoList);
//成本中心设置
TbsCenterDto sumCenterDto = CopierUtil.copy(item.get(0).getCenter2(),new TbsCenterDto());
sumCenterDto.setCenterName("合计"+sumCenterDto.getCenterName());
mainItem.setCenter2(sumCenterDto);
return mainItem;
}
private List<List<BirCenterCostRateMain>> buildCostData(String type,String year,List<String> headerList){
List<List<BirCenterCostRateMain>> itemDataList = new ArrayList<>();
if(headerList.size()>0) {
if (type.equals(TbsCenterType.saleRegion.name())) { if (type.equals(TbsCenterType.saleRegion.name())) {
List<BmsRegion> bmsRegionList = bmsRegionService.list(); List<BmsRegion> bmsRegionList = bmsRegionService.list();
Map<String, BmsRegion> bmsRegionMap = bmsRegionList.stream().collect(Collectors.toMap(BmsRegion::getId, Function.identity())); Map<String, BmsRegion> bmsRegionMap = bmsRegionList.stream().collect(Collectors.toMap(BmsRegion::getId, Function.identity()));
@ -193,28 +262,10 @@ public class BirReportAccountBookServiceImpl implements BirReportAccountBookServ
}).filter(a -> a.getCenter2() != null).collect(Collectors.toList()); }).filter(a -> a.getCenter2() != null).collect(Collectors.toList());
itemDataList.add(mainList); itemDataList.add(mainList);
} }
return itemDataList;
LambdaQueryWrapper<TbsBudgetPlan> lqw = new LambdaQueryWrapper<>(); }else{
lqw.eq(TbsBudgetPlan::getBudgetYear,year); return itemDataList;
TbsBudgetPlan tbsBudgetPlan = tbsBudgetPlanService.getOne(lqw); }
BudgetPlanVo budgetPlanVo = new BudgetPlanVo();
CopierUtil.copy(tbsBudgetPlan,budgetPlanVo);
BigDecimal plannedAmount = tbsBudgetLogMapper.countPlannedBudgetAmount();
budgetPlanVo.setPlannedAmount(plannedAmount);
BigDecimal usedAmount = tbsBudgetLogMapper.countUsedBudgetAmount();
budgetPlanVo.setUsedAmout(usedAmount);
BigDecimal realSaleAmount = erpDispatchDataMapper.querySumCostAmt(Integer.parseInt(year+"01"),Integer.parseInt(year+"12"),null);
budgetPlanVo.setRealSaleAmount(realSaleAmount);
vo.setHeaderList(headerList);
vo.setItemList(itemDataList);
vo.setBudgetPlanVo(budgetPlanVo);
return vo;
} }
} }

4
src/main/java/com/qs/serve/modules/goods/entity/dto/TbsCenterDto.java

@ -36,6 +36,10 @@ public class TbsCenterDto {
@NotNull(message = "费用占比率不能为空") @NotNull(message = "费用占比率不能为空")
private BigDecimal centerAmount; private BigDecimal centerAmount;
public TbsCenterDto(){
}
public TbsCenterDto(String id, String centerCode, String centerName, String centerType,LocalDateTime createTime) { public TbsCenterDto(String id, String centerCode, String centerName, String centerType,LocalDateTime createTime) {
this.id = id; this.id = id;
this.centerCode = centerCode; this.centerCode = centerCode;

1
src/main/resources/mapper/bir/BirActivityCenterGoodsMapper.xml

@ -110,6 +110,7 @@
bir_activity_center_goods.activity_id is null bir_activity_center_goods.activity_id is null
or bir_activity_center_goods.activity_total_amount != tbs_activity.total_amount or bir_activity_center_goods.activity_total_amount != tbs_activity.total_amount
or bir_activity_center_goods.activity_total_check_amount != tbs_activity.used_amount or bir_activity_center_goods.activity_total_check_amount != tbs_activity.used_amount
or bir_activity_center_goods.activity_total_release_amount != tbs_activity.release_amount
or bir_activity_center_goods.pre_start_date != tbs_activity.pre_start_date or bir_activity_center_goods.pre_start_date != tbs_activity.pre_start_date
or bir_activity_center_goods.pre_end_date != tbs_activity.pre_end_date or bir_activity_center_goods.pre_end_date != tbs_activity.pre_end_date
or bir_activity_center_goods.activity_finished_flag != `tbs_activity`.finished_flag or bir_activity_center_goods.activity_finished_flag != `tbs_activity`.finished_flag

Loading…
Cancel
Save