Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

contract
Yen 2 years ago
parent
commit
49a0417d0c
  1. 3
      src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java
  2. 3
      src/main/java/com/qs/serve/modules/bir/mapper/BirActivityCenterGoodsMapper.java
  3. 59
      src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java
  4. 25
      src/main/resources/mapper/bir/BirActivityCenterGoodsMapper.xml

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

@ -43,6 +43,9 @@ public class BirActivityCenterGoods implements Serializable {
@NotNull(message = "天数不能为空")
private Integer days;
@NotNull(message = "天数不能为空")
private Integer dayOfMouth;
/** 开始日期 */
@NotNull(message = "开始日期不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd")

3
src/main/java/com/qs/serve/modules/bir/mapper/BirActivityCenterGoodsMapper.java

@ -22,7 +22,8 @@ public interface BirActivityCenterGoodsMapper extends BaseMapper<BirActivityCent
* @return
*/
List<TbsActivityCenterGoods> selectChangeCenterGoods(@Param("startDate") LocalDate startDate,
@Param("endDate")LocalDate endDate);
@Param("endDate")LocalDate endDate,
@Param("costApplyId")Long costApplyId);
}

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

@ -17,6 +17,7 @@ import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityCenter;
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods;
import com.qs.serve.modules.tbs.mapper.TbsActivityCenterGoodsMapper;
import com.qs.serve.modules.tbs.service.TbsActivityCenterGoodsService;
import com.qs.serve.modules.vtb.common.VtbFundFlowType;
import com.qs.serve.modules.vtb.entity.VtbFundFlow;
@ -59,13 +60,16 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
private final VtbFundFlowMapper fundFlowMapper;
private final TbsActivityCenterGoodsMapper tbsActivityCenterGoodsMapper;
@Override
public void buildReport(int year, int month) {
LocalDate startDate = LocalDate.of(year,month,1);
int lastDayNum2 = startDate.lengthOfMonth();
LocalDate endDate = LocalDate.of(year,month,lastDayNum2);
//加载所有异动的数据
List<TbsActivityCenterGoods> activityCenterGoodsAllList = this.baseMapper.selectChangeCenterGoods(startDate,endDate);
List<TbsActivityCenterGoods> activityCenterGoodsAllList = this.baseMapper.selectChangeCenterGoods(startDate,endDate,null);
// List<TbsActivityCenterGoods> activityCenterGoodsAllList = this.baseMapper.selectChangeCenterGoods(null,null,19596L);
if(activityCenterGoodsAllList.size()<1){
return;
}
@ -150,6 +154,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
entity.setActivityCenterGoodsId(activityCenterGoods.getId());
entity.setKeyNum(currDateSplit.getYearMonth());
entity.setDays(currentActDays);
entity.setDayOfMouth(currDateSplit.getDays());
entity.setStarDate(currDateSplit.getStartDate());
entity.setEndDate(currDateSplit.getEndDate());
entity.setSplitAmount(goodSplitDTO.getCurrentSplitAmount());
@ -293,30 +298,12 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
DateSplitDTO currDateSplit,
Integer currentActDays,
Map<Long,BigDecimal> actReleaseMap){
//释放金额
BigDecimal activityReleaseAmt = actReleaseMap.get(activityCenterGoods.getActivityId());
//活动相关
BigDecimal activityAmt = activityCenterGoods.getActivityAmt();
BigDecimal activityCheckAmt = activityCenterGoods.getActivityCheckAmt();
//当前CenterGoods项金额
BigDecimal centerGoodsAmount = activityCenterGoods.getCenterGoodsAmount();
//当前CenterGoods项释放金额
BigDecimal currentReleaseAmount = activityReleaseAmt==null?BigDecimal.ZERO:
activityReleaseAmt
.multiply(activityCenterGoods.getCenterGoodsRate())
.multiply(activityCenterGoods.getCenterRate())
.divide(new BigDecimal("10000"),BigDecimal.ROUND_DOWN);
//当前CenterGoods项核销金额(粗略计算)
BigDecimal currentCheckAmount = activityCheckAmt
.multiply(activityCenterGoods.getCenterRate())
.multiply(activityCenterGoods.getCenterGoodsRate())
.divide(new BigDecimal("10000"),BigDecimal.ROUND_DOWN);
//当前CenterGoods分割项金额
BigDecimal currentSplitAmount = activityCenterGoods.getCenterGoodsAmount();
//当前CenterGoods分割项核销金额(粗略计算)
BigDecimal currentSplitCheckAmount = currentCheckAmount;
BigDecimal currentReleaseSplitAmount = currentReleaseAmount;
//日期占比
BigDecimal currentCenterGoodsAmount = activityCenterGoods.getCenterGoodsAmount();
BigDecimal splitCenterGoodsAmount = activityCenterGoods.getCenterGoodsAmount();
BigDecimal currentCheckAmount = activityCenterGoods.getUsedAmount();
BigDecimal splitCheckAmount = activityCenterGoods.getUsedAmount();
// sort==size 最后一个节点
if (currDateSplit.getSort().equals(dateSplitList.size())) {
@ -327,22 +314,24 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
if (splitDTO.getYearMonth().equals(currDateSplit.getYearMonth())) {
continue;
}
currentSplitAmount = currentSplitAmount.subtract(centerGoodsAmount.multiply(dayRate));
currentSplitCheckAmount = currentSplitCheckAmount.subtract(currentCheckAmount.multiply(dayRate));
currentReleaseSplitAmount = currentReleaseSplitAmount.subtract(currentReleaseSplitAmount.multiply(dayRate));
splitCenterGoodsAmount = splitCenterGoodsAmount.subtract(currentCenterGoodsAmount.multiply(dayRate));
splitCheckAmount = splitCheckAmount.subtract(currentCheckAmount.multiply(dayRate));
}
} else {
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "")
.divide(new BigDecimal(currentActDays + ""), 4, BigDecimal.ROUND_HALF_DOWN);
currentSplitAmount = centerGoodsAmount.multiply(dayRate);
currentSplitCheckAmount = currentCheckAmount.multiply(dayRate);
currentReleaseSplitAmount = currentReleaseSplitAmount.multiply(dayRate);
splitCenterGoodsAmount = currentCenterGoodsAmount.multiply(dayRate);
splitCheckAmount = currentCheckAmount.multiply(dayRate);
}
BirCenterGoodSplitDTO goodSplitDTO = new BirCenterGoodSplitDTO();
goodSplitDTO.setCurrentSplitAmount(currentSplitAmount);
goodSplitDTO.setCurrentSplitCheckAmount(currentSplitCheckAmount);
goodSplitDTO.setCurrentSplitReleaseAmount(currentReleaseSplitAmount);
goodSplitDTO.setCurrentSplitAmount(splitCenterGoodsAmount);
goodSplitDTO.setCurrentSplitCheckAmount(splitCenterGoodsAmount);
goodSplitDTO.setCurrentSplitReleaseAmount(BigDecimal.ZERO);
if(activityCenterGoods.getActivityFinishedFlag().equals(1)){
BigDecimal currentReleaseAmount = splitCenterGoodsAmount.subtract(splitCheckAmount);
goodSplitDTO.setCurrentSplitReleaseAmount(currentReleaseAmount);
goodSplitDTO.setCurrentSplitCheckAmount(splitCheckAmount);
}
return goodSplitDTO;
}

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

@ -104,8 +104,10 @@
on `tbs_activity`.cost_apply_id = `tbs_cost_apply`.id
where
1=1
and tbs_activity.del_flag = 0
and tbs_cost_apply.charge_state !=0
and tbs_activity.del_flag = 0
and tbs_activity_center_goods.del_flag = 0
and tbs_cost_apply.del_flag = 0
and tbs_cost_apply.charge_state !=0
and (
bir_activity_center_goods.activity_id is null
or bir_activity_center_goods.activity_total_amount != tbs_activity.total_amount
@ -115,13 +117,18 @@
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
)
and (
(tbs_activity.act_start_date between #{startDate} and #{endDate})
or
(tbs_activity.act_end_date between #{startDate} and #{endDate})
or
(tbs_activity.act_end_date &gt;= #{endDate} and tbs_activity.act_start_date &lt;= #{startDate})
)
<if test="startDate !=null and endDate !=null">
and (
(tbs_activity.act_start_date between #{startDate} and #{endDate})
or
(tbs_activity.act_end_date between #{startDate} and #{endDate})
or
(tbs_activity.act_end_date &gt;= #{endDate} and tbs_activity.act_start_date &lt;= #{startDate})
)
</if>
<if test="costApplyId !=null ">
and tbs_activity_center_goods.cost_apply_id = #{costApplyId}
</if>
</select>

Loading…
Cancel
Save