Browse Source

费用率展示修改

v1.0
Yen 2 years ago
parent
commit
270504a5dd
  1. 12
      src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java
  2. 63
      src/main/java/com/qs/serve/modules/bir/entity/vo/BirCostApplyRateVo.java
  3. 10
      src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java
  4. 90
      src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java
  5. 6
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java
  6. 2
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
  7. 5
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java
  8. 2
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyBo.java

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

@ -155,6 +155,18 @@ public class BirRoiRateController {
return R.ok(birCenterRateService.findCostCenterDataByCostApplyId(costApplyId,policyId)); return R.ok(birCenterRateService.findCostCenterDataByCostApplyId(costApplyId,policyId));
} }
/**
* 获取成本中心费率(版本v2)
* @param costApplyId
* @param policyId
* @return
*/
@RepeatSubmit
@GetMapping("/centerRateByCostApplyIdv2")
public R<List<BirCostApplyRateVo>> centerRateByCostApplyIdv2(Long costApplyId,Long policyId){
return R.ok(birCenterRateService.selectCostApplyRateVoList(costApplyId,policyId));
}
/** /**
* 发货单时间 * 发货单时间
* @return * @return

63
src/main/java/com/qs/serve/modules/bir/entity/vo/BirCostApplyRateVo.java

@ -0,0 +1,63 @@
package com.qs.serve.modules.bir.entity.vo;
import com.qs.serve.modules.tbs.entity.TbsActivityCenter;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/12/29
*/
@Data
public class BirCostApplyRateVo {
public BirCostApplyRateVo(String scheduleType,TbsActivityCenter activityCenter){
this.scheduleType = scheduleType;
this.centerId = activityCenter.getCenterId();
this.centerCode = activityCenter.getCenterCode();
this.centerName = activityCenter.getCenterName();
this.centerType = activityCenter.getCenterType();
}
private String centerId;
private String centerType;
private String centerCode;
private String centerName;
/**
* 年季月,yearquarter,month
*/
private String scheduleType;
/** 目标金额(待定) */
private BigDecimal targetAmount;
/** 预算金额(待定) */
private BigDecimal budgetAmt;
/** 预算费用率(待定) */
private BigDecimal budgetRate;
/** 客户发货 */
private BigDecimal cusDisAmt;
/** 客户费用(客户占用该成本中心的费用金额) */
private BigDecimal cusCostAmt;
/** 客户费用率(客户费用/客户发货) */
private BigDecimal cusRate;
/** 整体发货(该成本中心所有客户的发货金额) */
private BigDecimal centerDisAmt;
/** 整体费用(所有客户占用该成本中心的费用金额) */
private BigDecimal centerCostAmt;
/** 整体费用率(整体费用/整体发货) */
private BigDecimal centerRate;
}

10
src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.bir.service; package com.qs.serve.modules.bir.service;
import com.qs.serve.modules.bir.entity.vo.BirCostApplyRateVo;
import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem;
import java.util.List; import java.util.List;
@ -19,4 +20,13 @@ public interface BirCenterRateService {
TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName,String supplierCode); TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName,String supplierCode);
List<TbsCostSubItem.CostCenterTranStr> findCostCenterDataByCostApplyId(Long costApplyId,Long policyId); List<TbsCostSubItem.CostCenterTranStr> findCostCenterDataByCostApplyId(Long costApplyId,Long policyId);
/**
* 新的费用率统计
* @param costApplyId
* @param policyId
* @return
*/
List<BirCostApplyRateVo> selectCostApplyRateVoList(Long costApplyId,Long policyId);
} }

90
src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java

@ -14,6 +14,7 @@ import com.qs.serve.modules.bir.entity.dto.BirRoiCostDTO;
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.so.BirMonthCusCenterSo; import com.qs.serve.modules.bir.entity.so.BirMonthCusCenterSo;
import com.qs.serve.modules.bir.entity.vo.BirActivityCenterGoodsMonthVo; import com.qs.serve.modules.bir.entity.vo.BirActivityCenterGoodsMonthVo;
import com.qs.serve.modules.bir.entity.vo.BirCostApplyRateVo;
import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo; import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo;
import com.qs.serve.modules.bir.entity.vo.YtdQtdToOAVo; import com.qs.serve.modules.bir.entity.vo.YtdQtdToOAVo;
import com.qs.serve.modules.bir.mapper.BirActivityCenterGoodsMapper; import com.qs.serve.modules.bir.mapper.BirActivityCenterGoodsMapper;
@ -113,6 +114,95 @@ public class BirCenterRateServiceImpl implements BirCenterRateService {
return centerDataList; return centerDataList;
} }
@Override
public List<BirCostApplyRateVo> selectCostApplyRateVoList(Long costApplyId, Long policyId) {
TbsCostApply costApply = tbsCostApplyMapper.selectById(costApplyId);
final String supplierId = costApply.getSupplierId()+"";
LambdaQueryWrapper<TbsActivityCenter> acLqw = new LambdaQueryWrapper<>();
acLqw.eq(TbsActivityCenter::getCostApplyId,costApplyId);
List<TbsActivityCenter> activityCenterList = tbsActivityCenterMapper.selectList(acLqw);
LocalDate nowDate = LocalDate.now();
int year = nowDate.getYear();
int month = nowDate.getMonthValue();
month = month>1?month:1;
//年
int yearStartNum = year*100 + 1;
int yearEndNum = year*100 + month;
//当月
int currMonthNum = yearEndNum;
//当季度
List<Integer> numbers = QuarterUtil.getQuarterNumbers(year,month);
int quarterStartNum = numbers.get(0);
int quarterEndNum = numbers.get(2);
List<BirCostApplyRateVo> resultList = new ArrayList<>();
List<BirCostApplyRateVo> yearList = this.buildCostApplyRateList(
"year",yearStartNum, yearEndNum,
supplierId, activityCenterList);
List<BirCostApplyRateVo> seasonList = this.buildCostApplyRateList(
"quarter",quarterStartNum, quarterEndNum,
supplierId, activityCenterList);
List<BirCostApplyRateVo> monthList = this.buildCostApplyRateList(
"month",currMonthNum, currMonthNum,
supplierId, activityCenterList);
resultList.addAll(yearList);
resultList.addAll(seasonList);
resultList.addAll(monthList);
return resultList;
}
private List<BirCostApplyRateVo> buildCostApplyRateList(String scheduleType,int startMonthNum, int endMonthNum, String supplierId, List<TbsActivityCenter> activityCenterList) {
List<BirCostApplyRateVo> costApplyRateVoList = new ArrayList<>();
for (TbsActivityCenter center : activityCenterList) {
BirCostApplyRateVo costApplyRateVo = new BirCostApplyRateVo(scheduleType,center);
//周期内使用金额合计,成本中心
LambdaQueryWrapper<BirActivityCenterGoods> birCenterLwq = new LambdaQueryWrapper<>();
birCenterLwq.eq(BirActivityCenterGoods::getCenterId,center.getCenterId());
birCenterLwq.eq(BirActivityCenterGoods::getCenterType,center.getCenterType());
birCenterLwq.ge(BirActivityCenterGoods::getKeyNum, startMonthNum);
birCenterLwq.le(BirActivityCenterGoods::getKeyNum, endMonthNum);
List<BirActivityCenterGoods> birCenterCost = birActivityCenterGoodsMapper.selectList(birCenterLwq);
BigDecimal centerUsedCost = birCenterCost.stream().map(BirActivityCenterGoods::getSplitUsedAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
//周期内使用金额合计,客户
LambdaQueryWrapper<BirActivityCenterGoods> birSupplierLwq = new LambdaQueryWrapper<>();
birSupplierLwq.eq(BirActivityCenterGoods::getSupplierId, supplierId);
birSupplierLwq.ge(BirActivityCenterGoods::getKeyNum, startMonthNum);
birSupplierLwq.le(BirActivityCenterGoods::getKeyNum, endMonthNum);
List<BirActivityCenterGoods> birSupplierCost = birActivityCenterGoodsMapper.selectList(birSupplierLwq);
BigDecimal supplierUsedCost = birSupplierCost.stream().map(BirActivityCenterGoods::getSplitUsedAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
//客户维度发货金额
List<ErpDispatchSumVo> dispatchSumSupplierVos = dispatchDataMapper.querySumCost(startMonthNum, endMonthNum,Arrays.asList(supplierId));
BigDecimal dispatchSumSupplierAmt = dispatchSumSupplierVos.stream().map(ErpDispatchSumVo::getDispatchSumCost).reduce(BigDecimal.ZERO,BigDecimal::add);
//成本中心维度发货金额
List<String> supplierCodeList = birRoiRateService.getSupplierCodesByCenter(
new BirRoiCostDTO(),center.getCenterType(), Arrays.asList(center.getCenterId()));
List<ErpDispatchSumVo> dispatchSumCenterVos = dispatchDataMapper.querySumCost(startMonthNum, endMonthNum,supplierCodeList);
BigDecimal dispatchSumCenterAmt = dispatchSumCenterVos.stream().map(ErpDispatchSumVo::getDispatchSumCost).reduce(BigDecimal.ZERO,BigDecimal::add);
costApplyRateVo.setCusCostAmt(supplierUsedCost);
costApplyRateVo.setCusDisAmt(dispatchSumSupplierAmt);
costApplyRateVo.setCenterCostAmt(centerUsedCost);
costApplyRateVo.setCenterDisAmt(dispatchSumCenterAmt);
if(dispatchSumSupplierAmt.compareTo(BigDecimal.ZERO)!=0){
costApplyRateVo.setCusRate(supplierUsedCost.divide(dispatchSumSupplierAmt,2,RoundingMode.DOWN));
}
if(dispatchSumCenterAmt.compareTo(BigDecimal.ZERO)!=0){
costApplyRateVo.setCenterRate(centerUsedCost.divide(dispatchSumCenterAmt,2,RoundingMode.DOWN));
}
costApplyRateVoList.add(costApplyRateVo);
}
return costApplyRateVoList;
}
@Override @Override
public TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName, String supplierCode) { public TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName, String supplierCode) {

6
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java

@ -82,6 +82,12 @@ public class TbsActivityTemplate implements Serializable {
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;
/**
* 选择类型
* 1只能选择客户2只能选择供应商3可以选择客户和供应商
*/
private Integer selectType;
/** 开始时间 */ /** 开始时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

2
src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java

@ -212,6 +212,8 @@ public class TbsCostApply implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime changeActionTime; private LocalDateTime changeActionTime;
private Integer selectType;
/** /**
* 编辑金额标识 * 编辑金额标识
* 审批通过时恢复0 * 审批通过时恢复0

5
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java

@ -85,5 +85,10 @@ public class TbsActivityTemplateBo implements Serializable {
private String preRemark; private String preRemark;
/**
* 选择类型
* 1只能选择客户2只能选择供应商3可以选择客户和供应商
*/
private Integer selectType;
} }

2
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyBo.java

@ -48,5 +48,7 @@ public class TbsCostApplyBo implements Serializable {
private Integer costThemeEditFlag; private Integer costThemeEditFlag;
private Integer selectType;
} }

Loading…
Cancel
Save