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

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

@ -20,4 +20,7 @@ public class BirCenterGoodSplitDTO {
//当前CenterGoods分割项核销金额(粗略计算) //当前CenterGoods分割项核销金额(粗略计算)
BigDecimal currentSplitReleaseAmount; 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还存在 //添加支持:活动明细删除了,在bir_activity_center_goods还存在
// 删除历史数据 // 删除历史数据
List<Long> activityIds = activityCenterGoodsAllList.stream().filter(a->a.getId()!=null) List<Long> activityIds = activityCenterGoodsAllList.stream().filter(a->a.getId()!=null)
.map(TbsActivityCenterGoods::getActivityId).collect(Collectors.toList()); .map(TbsActivityCenterGoods::getActivityId).collect(Collectors.toList());
@ -243,6 +242,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
entity.setSplitAmount(goodSplitDTO.getCurrentSplitAmount()); entity.setSplitAmount(goodSplitDTO.getCurrentSplitAmount());
entity.setSplitUsedAmount(goodSplitDTO.getCurrentSplitCheckAmount()); entity.setSplitUsedAmount(goodSplitDTO.getCurrentSplitCheckAmount());
entity.setSplitReleaseAmount(goodSplitDTO.getCurrentSplitReleaseAmount()); entity.setSplitReleaseAmount(goodSplitDTO.getCurrentSplitReleaseAmount());
entity.setSplitPayAmount(goodSplitDTO.getCurrentSplitPayAmount());
entity.setCenterGoodsCode(activityCenterGoods.getCenterGoodsCode()); entity.setCenterGoodsCode(activityCenterGoods.getCenterGoodsCode());
entity.setCostApplyId(activityCenterGoods.getCostApplyId()); entity.setCostApplyId(activityCenterGoods.getCostApplyId());
entity.setActivityId(activityCenterGoods.getActivityId()); entity.setActivityId(activityCenterGoods.getActivityId());
@ -254,6 +254,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
releaseAmount = entity.getActivityTotalAmount().subtract(entity.getActivityTotalCheckAmount()); releaseAmount = entity.getActivityTotalAmount().subtract(entity.getActivityTotalCheckAmount());
} }
entity.setActivityTotalReleaseAmount(releaseAmount); entity.setActivityTotalReleaseAmount(releaseAmount);
entity.setActivityTotalPayAmount(activityCenterGoods.getPayAmount());
entity.setActivityFinishedFlag(activityCenterGoods.getActivityFinishedFlag()); entity.setActivityFinishedFlag(activityCenterGoods.getActivityFinishedFlag());
entity.setSubjectId(activityCenterGoods.getSubjectId()); entity.setSubjectId(activityCenterGoods.getSubjectId());
entity.setSubjectCode(activityCenterGoods.getSubjectCode()); entity.setSubjectCode(activityCenterGoods.getSubjectCode());
@ -408,6 +409,9 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
BigDecimal currentCheckAmount = activityCenterGoods.getUsedAmount(); BigDecimal currentCheckAmount = activityCenterGoods.getUsedAmount();
BigDecimal splitCheckAmount = activityCenterGoods.getUsedAmount(); BigDecimal splitCheckAmount = activityCenterGoods.getUsedAmount();
BigDecimal currentPayAmount = activityCenterGoods.getPayAmount();
BigDecimal splitPayAmount = activityCenterGoods.getPayAmount();
// sort==size 最后一个节点 // sort==size 最后一个节点
if (currDateSplit.getSort().equals(dateSplitList.size())) { if (currDateSplit.getSort().equals(dateSplitList.size())) {
for (DateSplitDTO splitDTO : dateSplitList) { 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)); splitCenterGoodsAmount = splitCenterGoodsAmount.subtract(currentCenterGoodsAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP));
splitCheckAmount = splitCheckAmount.subtract(currentCheckAmount.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 { } else {
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "") BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "")
.divide(new BigDecimal(currentActDays + ""), 4, BigDecimal.ROUND_HALF_DOWN); .divide(new BigDecimal(currentActDays + ""), 4, BigDecimal.ROUND_HALF_DOWN);
splitCenterGoodsAmount = currentCenterGoodsAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP); splitCenterGoodsAmount = currentCenterGoodsAmount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP);
splitCheckAmount = currentCheckAmount.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(); BirCenterGoodSplitDTO goodSplitDTO = new BirCenterGoodSplitDTO();
goodSplitDTO.setCurrentSplitAmount(splitCenterGoodsAmount); goodSplitDTO.setCurrentSplitAmount(splitCenterGoodsAmount);
goodSplitDTO.setCurrentSplitCheckAmount(splitCenterGoodsAmount); goodSplitDTO.setCurrentSplitCheckAmount(splitCenterGoodsAmount);
goodSplitDTO.setCurrentSplitPayAmount(splitPayAmount);
goodSplitDTO.setCurrentSplitReleaseAmount(BigDecimal.ZERO); goodSplitDTO.setCurrentSplitReleaseAmount(BigDecimal.ZERO);
if(activityCenterGoods.getActivityFinishedFlag().equals(1)){ if(activityCenterGoods.getActivityFinishedFlag().equals(1)){
BigDecimal currentReleaseAmount = splitCenterGoodsAmount.subtract(splitCheckAmount); BigDecimal currentReleaseAmount = splitCenterGoodsAmount.subtract(splitCheckAmount);
goodSplitDTO.setCurrentSplitReleaseAmount(currentReleaseAmount); goodSplitDTO.setCurrentSplitReleaseAmount(currentReleaseAmount);
goodSplitDTO.setCurrentSplitCheckAmount(splitCheckAmount); goodSplitDTO.setCurrentSplitCheckAmount(splitCheckAmount);
goodSplitDTO.setCurrentSplitPayAmount(splitPayAmount);
} }
return goodSplitDTO; 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 currentAmount = BigDecimal.ZERO;
//核销金额 //核销金额
BigDecimal currentCheckAmount = BigDecimal.ZERO; BigDecimal currentCheckAmount = BigDecimal.ZERO;
//支付金额
BigDecimal currentPayAmount = BigDecimal.ZERO;
Integer currItemDays = 0; Integer currItemDays = 0;
DateSplitDTO currDateSplit = dto; DateSplitDTO currDateSplit = dto;
@ -103,6 +106,7 @@ public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMappe
currentAmount = activity.getTotalAmount(); currentAmount = activity.getTotalAmount();
//核销金额 //核销金额
currentCheckAmount = activity.getUsedAmount(); currentCheckAmount = activity.getUsedAmount();
currentPayAmount = activity.getPayAmount();
for (DateSplitDTO splitDTO : dateSplitList) { for (DateSplitDTO splitDTO : dateSplitList) {
//跳过当前年月 //跳过当前年月
if (splitDTO.getYearMonth().equals(dto.getYearMonth())) { 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); .divide(new BigDecimal(currentActDays + ""), 2, BigDecimal.ROUND_HALF_DOWN);
currentAmount = amount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP); currentAmount = amount.multiply(dayRate).setScale(2, RoundingMode.HALF_UP);
currentCheckAmount = activity.getUsedAmount().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()); 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 = "收件人不能为空") @NotBlank(message = "收件人不能为空")
@Length(max = 30,message = "收件人长度不能超过30字")
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String receiver; 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_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.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_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