diff --git a/src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java b/src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java index 12348c09..4a3e12ff 100644 --- a/src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java +++ b/src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java @@ -94,6 +94,16 @@ public class BirBaseActivity implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private LocalDate endDate; + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate activityStartDate; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate activityEndDate; + + private Integer applyStatus; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java index 9e59affb..49fd2523 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java @@ -54,82 +54,131 @@ public class BirBaseActivityServiceImpl extends ServiceImpl birBaseActivityLqw = new LambdaQueryWrapper<>(); birBaseActivityLqw.in(BirBaseActivity::getActivityId,ids); - birBaseActivityLqw.eq(BirBaseActivity::getKeyNum,yearMonth); this.remove(birBaseActivityLqw); + List costIds = activityList.stream().map(a->a.getCostApplyId()).distinct().collect(Collectors.toList()); + LambdaQueryWrapper costApplyLqw = new LambdaQueryWrapper<>(); + costApplyLqw.in(TbsCostApply::getId,costIds); + List costApplyList = costApplyMapper.selectList(costApplyLqw); + List birBaseActivities = new ArrayList<>(); for (TbsActivity activity : activityList) { - BirBaseActivity baseActivity = new BirBaseActivity(); - LocalDate actStartDate = activity.getActStartDate(); - LocalDate actEndDate = activity.getActEndDate(); + + TbsCostApply costApply = costApplyList.stream().filter(a->a.getId().equals(activity.getCostApplyId())).findFirst().get(); + + if(costApply==null){ + continue; + } + + LocalDate actStartDate = activity.getPreStartDate(); + LocalDate actEndDate = activity.getPreEndDate(); int currentActDays = (int) (actEndDate.toEpochDay()-actStartDate.toEpochDay()+1); BigDecimal amount = activity.getTotalAmount(); List dateSplitList = DateSplitUtil.getSplitDto(actStartDate,actEndDate); - //活动金额 - BigDecimal currentAmount = null; - //核销金额 - BigDecimal currentCheckAmount = null; - Integer currItemDays = null; + if(dateSplitList.size()>1){ //当前年月 - DateSplitDTO currDateSplit = dateSplitList.stream() - .filter(a->a.getYearMonth().equals(yearMonth)) - .collect(Collectors.toList()).get(0); - currItemDays = currDateSplit.getDays(); - baseActivity.setStartDate(currDateSplit.getStartDate()); - baseActivity.setEndDate(currDateSplit.getEndDate()); - if(currDateSplit.getSort().equals(dateSplitList.size())){ + for(DateSplitDTO dto : dateSplitList) { + BirBaseActivity baseActivity = new BirBaseActivity(); + //活动金额 - currentAmount = activity.getTotalAmount(); + BigDecimal currentAmount = BigDecimal.ZERO; //核销金额 - currentCheckAmount = activity.getUsedAmount(); - for (DateSplitDTO splitDTO : dateSplitList) { - //跳过当前年月 - if(splitDTO.getYearMonth().equals(yearMonth)){ - continue; + BigDecimal currentCheckAmount = BigDecimal.ZERO; + Integer currItemDays = 0; + + DateSplitDTO currDateSplit = dto; + currItemDays = currDateSplit.getDays(); + baseActivity.setStartDate(currDateSplit.getStartDate()); + baseActivity.setEndDate(currDateSplit.getEndDate()); + if (currDateSplit.getSort().equals(dateSplitList.size())) { + //最后一个月 + //活动金额 + currentAmount = activity.getTotalAmount(); + //核销金额 + currentCheckAmount = activity.getUsedAmount(); + for (DateSplitDTO splitDTO : dateSplitList) { + //跳过当前年月 + if (splitDTO.getYearMonth().equals(dto.getYearMonth())) { + continue; + } + //日期占比 + BigDecimal dayRate = new BigDecimal(splitDTO.getDays() + "") + .divide(new BigDecimal(currentActDays + ""), 2, BigDecimal.ROUND_HALF_DOWN); + currentAmount = currentAmount.subtract(amount.multiply(dayRate)); + currentCheckAmount = currentCheckAmount.subtract(activity.getUsedAmount().multiply(dayRate)); } + } else { //日期占比 - BigDecimal dayRate = new BigDecimal(splitDTO.getDays()+"") - .divide(new BigDecimal(currentActDays+""),2, BigDecimal.ROUND_HALF_DOWN); - currentAmount = currentAmount.subtract(amount.multiply(dayRate)); - currentCheckAmount = currentCheckAmount.subtract(activity.getUsedAmount().multiply(dayRate)); + BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "") + .divide(new BigDecimal(currentActDays + ""), 2, BigDecimal.ROUND_HALF_DOWN); + currentAmount = amount.multiply(dayRate); + currentCheckAmount = activity.getUsedAmount().multiply(dayRate); } - }else { - //日期占比 - BigDecimal dayRate = new BigDecimal(currDateSplit.getDays()+"") - .divide(new BigDecimal(currentActDays+""),2, BigDecimal.ROUND_HALF_DOWN); - currentAmount = amount.multiply(dayRate); - currentCheckAmount = activity.getUsedAmount().multiply(dayRate); + + baseActivity.setKeyNum(dto.getYearMonth()); + baseActivity.setActivityId(activity.getId()); + baseActivity.setCostApplyId(costApply.getId()); + baseActivity.setActivityAmt(currentAmount); + baseActivity.setActivityTotalAmt(activity.getTotalAmount()); + baseActivity.setActivityUsedAmt(activity.getUsedAmount()); + baseActivity.setVerificationAmt(currentCheckAmount); + baseActivity.setPreActQuantity(activity.getPreActQuantity()); + baseActivity.setSupplierId(activity.getSupplierId()); + baseActivity.setSupplierCode(activity.getSupplierCode()); + baseActivity.setSupplierName(activity.getSupplierName()); + baseActivity.setActivityStartDate(actStartDate); + baseActivity.setActivityEndDate(actEndDate); + baseActivity.setUserId(costApply.getUserId()); + baseActivity.setMonthDays(currItemDays); + baseActivity.setCostPassFlag(activity.getCostPassFlag()); + baseActivity.setTotalDays(currentActDays); + baseActivity.setApplyStatus(costApply.getChargeState()); + birBaseActivities.add(baseActivity); } }else if (dateSplitList.size()==1){ + BirBaseActivity baseActivity = new BirBaseActivity(); + + //活动金额 + BigDecimal currentAmountOne = null; + //核销金额 + BigDecimal currentCheckAmountOne = null; + Integer currItemDaysOne = null; + DateSplitDTO dateSplit = dateSplitList.get(0); baseActivity.setStartDate(dateSplit.getStartDate()); baseActivity.setEndDate(dateSplit.getEndDate()); - currentAmount = amount; - currentCheckAmount = activity.getUsedAmount(); - currItemDays = dateSplit.getDays(); + currentAmountOne = amount; + currentCheckAmountOne = activity.getUsedAmount(); + currItemDaysOne = dateSplit.getDays(); + + baseActivity.setKeyNum(dateSplit.getYearMonth()); + baseActivity.setActivityId(activity.getId()); + baseActivity.setCostApplyId(costApply.getId()); + baseActivity.setActivityAmt(currentAmountOne); + baseActivity.setActivityTotalAmt(activity.getTotalAmount()); + baseActivity.setActivityUsedAmt(activity.getUsedAmount()); + baseActivity.setVerificationAmt(currentCheckAmountOne); + baseActivity.setPreActQuantity(activity.getPreActQuantity()); + baseActivity.setSupplierId(activity.getSupplierId()); + baseActivity.setActivityStartDate(actStartDate); + baseActivity.setActivityEndDate(actEndDate); + baseActivity.setSupplierCode(activity.getSupplierCode()); + baseActivity.setSupplierName(activity.getSupplierName()); + baseActivity.setUserId(costApply.getUserId()); + baseActivity.setMonthDays(currItemDaysOne); + baseActivity.setCostPassFlag(activity.getCostPassFlag()); + baseActivity.setTotalDays(currentActDays); + baseActivity.setApplyStatus(costApply.getChargeState()); + birBaseActivities.add(baseActivity); }else { Assert.throwEx("dateSplitList is empty"); } - TbsCostApply costApply = costApplyMapper.selectById(activity.getCostApplyId()); - baseActivity.setKeyNum(yearMonth); - baseActivity.setActivityId(activity.getId()); - baseActivity.setCostApplyId(costApply.getId()); - baseActivity.setActivityAmt(currentAmount); - baseActivity.setActivityTotalAmt(activity.getTotalAmount()); - baseActivity.setActivityUsedAmt(activity.getUsedAmount()); - baseActivity.setVerificationAmt(currentCheckAmount); - baseActivity.setPreActQuantity(activity.getPreActQuantity()); - baseActivity.setSupplierId(activity.getSupplierId()); - baseActivity.setSupplierCode(activity.getSupplierCode()); - baseActivity.setSupplierName(activity.getSupplierName()); - baseActivity.setUserId(costApply.getUserId()); - baseActivity.setMonthDays(currItemDays); - baseActivity.setCostPassFlag(activity.getCostPassFlag()); - baseActivity.setTotalDays(currentActDays); - birBaseActivities.add(baseActivity); + + } //保存 + this.saveBatch(birBaseActivities); } diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java index fe483668..6b1fa4dd 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java @@ -134,6 +134,8 @@ public class BirRoiRateServiceImpl extends ServiceImpl客户的销售区域 @@ -145,6 +147,8 @@ public class BirRoiRateServiceImpl extends ServiceImpl