Browse Source

活动品类按比例分割支付金额(待测试)

v1.0
Yen 2 years ago
parent
commit
cb74975cec
  1. 4
      src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java
  2. 3
      src/main/java/com/qs/serve/modules/bir/entity/dto/BirCenterGoodSplitDTO.java
  3. 10
      src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java
  4. 5
      src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java
  5. 1
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierAddress.java
  6. 1
      src/main/resources/mapper/bir/BirActivityCenterGoodsMapper.xml

4
src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java

@ -80,6 +80,8 @@ public class BirActivityCenterGoods implements Serializable {
@NotNull(message = "分配的释放金额不能为空")
private BigDecimal splitReleaseAmount;
private BigDecimal splitPayAmount;
/** 成本明细编码 */
@ExcelProperty("成本明细编码")
@Length(max = 30,message = "成本明细编码长度不能超过30字")
@ -118,6 +120,8 @@ public class BirActivityCenterGoods implements Serializable {
@ExcelProperty("活动释放金额")
private BigDecimal activityTotalReleaseAmount;
private BigDecimal activityTotalPayAmount;
/** 科目id */
@NotNull(message = "科目id不能为空")
private Long subjectId;

3
src/main/java/com/qs/serve/modules/bir/entity/dto/BirCenterGoodSplitDTO.java

@ -20,4 +20,7 @@ public class BirCenterGoodSplitDTO {
//当前CenterGoods分割项核销金额(粗略计算)
BigDecimal currentSplitReleaseAmount;
//当前CenterGoods分割项支付金额(粗略计算)
BigDecimal currentSplitPayAmount;
}

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

@ -90,7 +90,6 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
}
//添加支持:活动明细删除了,在bir_activity_center_goods还存在
// 删除历史数据
List<Long> activityIds = activityCenterGoodsAllList.stream().filter(a->a.getId()!=null)
.map(TbsActivityCenterGoods::getActivityId).collect(Collectors.toList());
@ -243,6 +242,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
entity.setSplitAmount(goodSplitDTO.getCurrentSplitAmount());
entity.setSplitUsedAmount(goodSplitDTO.getCurrentSplitCheckAmount());
entity.setSplitReleaseAmount(goodSplitDTO.getCurrentSplitReleaseAmount());
entity.setSplitPayAmount(goodSplitDTO.getCurrentSplitPayAmount());
entity.setCenterGoodsCode(activityCenterGoods.getCenterGoodsCode());
entity.setCostApplyId(activityCenterGoods.getCostApplyId());
entity.setActivityId(activityCenterGoods.getActivityId());
@ -254,6 +254,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
releaseAmount = entity.getActivityTotalAmount().subtract(entity.getActivityTotalCheckAmount());
}
entity.setActivityTotalReleaseAmount(releaseAmount);
entity.setActivityTotalPayAmount(activityCenterGoods.getPayAmount());
entity.setActivityFinishedFlag(activityCenterGoods.getActivityFinishedFlag());
entity.setSubjectId(activityCenterGoods.getSubjectId());
entity.setSubjectCode(activityCenterGoods.getSubjectCode());
@ -408,6 +409,9 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
BigDecimal currentCheckAmount = activityCenterGoods.getUsedAmount();
BigDecimal splitCheckAmount = activityCenterGoods.getUsedAmount();
BigDecimal currentPayAmount = activityCenterGoods.getPayAmount();
BigDecimal splitPayAmount = activityCenterGoods.getPayAmount();
// sort==size 最后一个节点
if (currDateSplit.getSort().equals(dateSplitList.size())) {
for (DateSplitDTO splitDTO : dateSplitList) {
@ -419,21 +423,25 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
}
splitCenterGoodsAmount = splitCenterGoodsAmount.subtract(currentCenterGoodsAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP));
splitCheckAmount = splitCheckAmount.subtract(currentCheckAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP));
splitPayAmount = splitPayAmount.subtract(currentPayAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP));
}
} else {
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "")
.divide(new BigDecimal(currentActDays + ""), 4, BigDecimal.ROUND_HALF_DOWN);
splitCenterGoodsAmount = currentCenterGoodsAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP);
splitCheckAmount = currentCheckAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP);
splitPayAmount = currentPayAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP);
}
BirCenterGoodSplitDTO goodSplitDTO = new BirCenterGoodSplitDTO();
goodSplitDTO.setCurrentSplitAmount(splitCenterGoodsAmount);
goodSplitDTO.setCurrentSplitCheckAmount(splitCenterGoodsAmount);
goodSplitDTO.setCurrentSplitPayAmount(splitPayAmount);
goodSplitDTO.setCurrentSplitReleaseAmount(BigDecimal.ZERO);
if(activityCenterGoods.getActivityFinishedFlag().equals(1)){
BigDecimal currentReleaseAmount = splitCenterGoodsAmount.subtract(splitCheckAmount);
goodSplitDTO.setCurrentSplitReleaseAmount(currentReleaseAmount);
goodSplitDTO.setCurrentSplitCheckAmount(splitCheckAmount);
goodSplitDTO.setCurrentSplitPayAmount(splitPayAmount);
}
return goodSplitDTO;
}

5
src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java

@ -91,6 +91,9 @@ public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMappe
BigDecimal currentAmount = BigDecimal.ZERO;
//核销金额
BigDecimal currentCheckAmount = BigDecimal.ZERO;
//支付金额
BigDecimal currentPayAmount = BigDecimal.ZERO;
Integer currItemDays = 0;
DateSplitDTO currDateSplit = dto;
@ -103,6 +106,7 @@ public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMappe
currentAmount = activity.getTotalAmount();
//核销金额
currentCheckAmount = activity.getUsedAmount();
currentPayAmount = activity.getPayAmount();
for (DateSplitDTO splitDTO : dateSplitList) {
//跳过当前年月
if (splitDTO.getYearMonth().equals(dto.getYearMonth())) {
@ -120,6 +124,7 @@ public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMappe
.divide(new BigDecimal(currentActDays + ""), 2, BigDecimal.ROUND_HALF_DOWN);
currentAmount = amount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP);
currentCheckAmount = activity.getUsedAmount().multiply(dayRate).setScale(2, RoundingMode.HALF_UP);
currentPayAmount = activity.getPayAmount().multiply(dayRate).setScale(2, RoundingMode.HALF_UP);
}
baseActivity.setKeyNum(dto.getYearMonth());

1
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierAddress.java

@ -78,7 +78,6 @@ public class BmsSupplierAddress implements Serializable {
/** 收件人 */
@NotBlank(message = "收件人不能为空")
@Length(max = 30,message = "收件人长度不能超过30字")
@TableField(condition = SqlCondition.LIKE)
private String receiver;

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

@ -115,6 +115,7 @@
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_release_amount != tbs_activity.release_amount
or bir_activity_center_goods.activity_total_pay_amount != tbs_activity.pay_amount
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.activity_finished_flag != `tbs_activity`.finished_flag

Loading…
Cancel
Save