| @@ -52,7 +52,7 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| * 订单金额 | * 订单金额 | ||||
| */ | */ | ||||
| @io.swagger.annotations.ApiModelProperty(value="订单金额",name="orderMoney") | @io.swagger.annotations.ApiModelProperty(value="订单金额",name="orderMoney") | ||||
| @Excel(name = "订单金额", width = 20, orderNum = "12") | |||||
| @Excel(name = "订单金额", width = 20, orderNum = "13") | |||||
| @TableField(value = "order_money") | @TableField(value = "order_money") | ||||
| private BigDecimal orderMoney; | private BigDecimal orderMoney; | ||||
| @@ -110,6 +110,9 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| private String merchantName; | private String merchantName; | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private List<Long> merchantIdList; | private List<Long> merchantIdList; | ||||
| @Excel(name = "商铺号", width = 20, orderNum = "8") | |||||
| @TableField(exist = false) | |||||
| private String merchantShopNum; | |||||
| /** | /** | ||||
| * 军团ID | * 军团ID | ||||
| @@ -117,7 +120,7 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value="军团ID",name="legionId") | @io.swagger.annotations.ApiModelProperty(value="军团ID",name="legionId") | ||||
| @TableField(value = "legion_id") | @TableField(value = "legion_id") | ||||
| private Long legionId; | private Long legionId; | ||||
| @Excel(name = "所属军团", width = 20, orderNum = "8") | |||||
| @Excel(name = "所属军团", width = 20, orderNum = "9") | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private String legionName; | private String legionName; | ||||
| @@ -130,14 +133,14 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value="联盟id",name="unionId") | @io.swagger.annotations.ApiModelProperty(value="联盟id",name="unionId") | ||||
| @TableField(value = "union_id") | @TableField(value = "union_id") | ||||
| private Long unionId; | private Long unionId; | ||||
| @Excel(name = "所属联盟", width = 20, orderNum = "9") | |||||
| @Excel(name = "所属联盟", width = 20, orderNum = "10") | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private String unionName; | private String unionName; | ||||
| // /** | // /** | ||||
| // * 卡属派系 | // * 卡属派系 | ||||
| // */ | // */ | ||||
| // @Excel(name = "所属派系", width = 20, orderNum = "10", replace = {"原联盟_1", "非联盟_2"}) | |||||
| // @Excel(name = "所属派系", width = 20, orderNum = "11", replace = {"原联盟_1", "非联盟_2"}) | |||||
| // @TableField(exist = false) | // @TableField(exist = false) | ||||
| // private Integer unionType; | // private Integer unionType; | ||||
| @@ -151,7 +154,7 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| * 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单 | * 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单 | ||||
| */ | */ | ||||
| @io.swagger.annotations.ApiModelProperty(value="带单类型 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单",name="orderType") | @io.swagger.annotations.ApiModelProperty(value="带单类型 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单",name="orderType") | ||||
| @Excel(name = "带单类型", width = 20, orderNum = "13", replace = {"签单_0", "外部军团带单_1", "内部军团不同联盟带单_2", "内部军团相同联盟带单_3", "内部军团无联盟带单_4"}) | |||||
| @Excel(name = "带单类型", width = 20, orderNum = "14", replace = {"签单_0", "外部军团带单_1", "内部军团不同联盟带单_2", "内部军团相同联盟带单_3", "内部军团无联盟带单_4"}) | |||||
| @TableField(value = "order_type") | @TableField(value = "order_type") | ||||
| private Integer orderType; | private Integer orderType; | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| @@ -194,7 +197,7 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| * 0:审核中, 1:已审批, 2:已驳回, 3:已失效 | * 0:审核中, 1:已审批, 2:已驳回, 3:已失效 | ||||
| */ | */ | ||||
| @io.swagger.annotations.ApiModelProperty(value="审批状态 0:审核中, 1:已审批, 2:已驳回, 3:已失效",name="auditStatus") | @io.swagger.annotations.ApiModelProperty(value="审批状态 0:审核中, 1:已审批, 2:已驳回, 3:已失效",name="auditStatus") | ||||
| @Excel(name = "审核状态", width = 20, orderNum = "11", replace = {"审核中_0", "已审批_1", "已驳回_2", "已失效_3"}) | |||||
| @Excel(name = "审核状态", width = 20, orderNum = "12", replace = {"审核中_0", "已审批_1", "已驳回_2", "已失效_3"}) | |||||
| @TableField(value = "audit_status") | @TableField(value = "audit_status") | ||||
| private Integer auditStatus; | private Integer auditStatus; | ||||
| @@ -210,7 +213,7 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| * 审核时间 | * 审核时间 | ||||
| */ | */ | ||||
| @io.swagger.annotations.ApiModelProperty(value="审核时间",name="auditTime") | @io.swagger.annotations.ApiModelProperty(value="审核时间",name="auditTime") | ||||
| @Excel(name = "审核时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "14") | |||||
| @Excel(name = "审核时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "15") | |||||
| @TableField(value = "audit_time") | @TableField(value = "audit_time") | ||||
| private Date auditTime; | private Date auditTime; | ||||
| @@ -223,6 +226,7 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| /** | /** | ||||
| * 抽奖券编码 | * 抽奖券编码 | ||||
| */ | */ | ||||
| @Excel(name = "抽奖券编码", width = 20, orderNum = "8") | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private String lotteryNum; | private String lotteryNum; | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| @@ -241,6 +245,7 @@ public class WxLegionActivityOrder extends TenantEntity { | |||||
| /** | /** | ||||
| * 抽奖券数量 | * 抽奖券数量 | ||||
| */ | */ | ||||
| @Excel(name = "抽奖券数量", width = 20, orderNum = "8") | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private Integer lotteryCount; | private Integer lotteryCount; | ||||
| @@ -105,6 +105,9 @@ public class WxVtwoActivityOrder extends TenantEntity { | |||||
| @TableField(value = "from_order_id") | @TableField(value = "from_order_id") | ||||
| private Long fromOrderId; | private Long fromOrderId; | ||||
| @TableField(exist = false) | |||||
| private List<Long> fromOrderIds; | |||||
| /** | /** | ||||
| * 订单号 | * 订单号 | ||||
| */ | */ | ||||
| @@ -214,7 +217,7 @@ public class WxVtwoActivityOrder extends TenantEntity { | |||||
| /** | /** | ||||
| * 审核时间 | * 审核时间 | ||||
| */ | */ | ||||
| @Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "13") | |||||
| @Excel(name = "审核时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "13") | |||||
| @TableField(value = "audit_time") | @TableField(value = "audit_time") | ||||
| private Date auditTime; | private Date auditTime; | ||||
| @@ -59,4 +59,6 @@ public interface WxVtwoActivityOrderService extends IService<WxVtwoActivityOrder | |||||
| List<WxVtwoOrderCountStatistics> orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); | List<WxVtwoOrderCountStatistics> orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); | ||||
| List<WxVtwoOrderBusinessStatistics> orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo); | List<WxVtwoOrderBusinessStatistics> orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo); | ||||
| Map<Long, WxVtwoActivityOrder> findFromMap(WxVtwoActivityOrder record); | |||||
| } | } | ||||
| @@ -77,6 +77,9 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||||
| @Autowired | @Autowired | ||||
| private WxLegionActivityConfigMapper wxLegionActivityConfigMapper; | private WxLegionActivityConfigMapper wxLegionActivityConfigMapper; | ||||
| @Autowired | |||||
| private WxVtwoActivityOrderService wxVtwoActivityOrderService; | |||||
| @Override | @Override | ||||
| public PageInfo<WxLegionActivityOrder> listAsPage(WxLegionActivityOrder wxLegionActivityOrder, Integer pageNum, Integer pageSize) { | public PageInfo<WxLegionActivityOrder> listAsPage(WxLegionActivityOrder wxLegionActivityOrder, Integer pageNum, Integer pageSize) { | ||||
| handlerQuery(wxLegionActivityOrder); | handlerQuery(wxLegionActivityOrder); | ||||
| @@ -124,17 +127,26 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||||
| if (wxLegionActivityOrders == null || wxLegionActivityOrders.isEmpty()) { | if (wxLegionActivityOrders == null || wxLegionActivityOrders.isEmpty()) { | ||||
| return; | return; | ||||
| } | } | ||||
| List<Long> ids = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getId).collect(Collectors.toList()); | |||||
| List<Long> merchantIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | List<Long> merchantIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | ||||
| List<Long> adminUserIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getAuditBy).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | List<Long> adminUserIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getAuditBy).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | ||||
| List<Long> userIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getCusId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | List<Long> userIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getCusId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | ||||
| Map<Long, WxMerchant> merchantMap = new HashMap<>(); | Map<Long, WxMerchant> merchantMap = new HashMap<>(); | ||||
| Map<Long,String> merchantShopNumberMap = new HashMap<>(); | |||||
| if(!merchantIds.isEmpty()){ | if(!merchantIds.isEmpty()){ | ||||
| WxMerchant merchantQ = new WxMerchant(); | WxMerchant merchantQ = new WxMerchant(); | ||||
| merchantQ.updateTenantInfo(wxLegionActivityOrder); | merchantQ.updateTenantInfo(wxLegionActivityOrder); | ||||
| merchantQ.setIds(merchantIds); | merchantQ.setIds(merchantIds); | ||||
| merchantMap = wxMerchantService.findMerchantMap(merchantQ); | merchantMap = wxMerchantService.findMerchantMap(merchantQ); | ||||
| merchantShopNumberMap = wxShopService.getMerchantShopNumberMap(wxLegionActivityOrder, merchantIds, EnumYesOrNo.NO.getCode()); | |||||
| } | |||||
| Map<Long,WxVtwoActivityOrder> vtwoActivityOrderMap = new HashMap<>(); | |||||
| if(!ids.isEmpty()){ | |||||
| WxVtwoActivityOrder vtwoActivityOrderQ = new WxVtwoActivityOrder(); | |||||
| vtwoActivityOrderQ.updateTenantInfo(wxLegionActivityOrder); | |||||
| vtwoActivityOrderQ.setFromOrderIds(ids); | |||||
| vtwoActivityOrderMap = wxVtwoActivityOrderService.findFromMap(vtwoActivityOrderQ); | |||||
| } | } | ||||
| Map<Long, MallUserInfo> userMap = new HashMap<>(); | Map<Long, MallUserInfo> userMap = new HashMap<>(); | ||||
| if(!adminUserIds.isEmpty()){ | if(!adminUserIds.isEmpty()){ | ||||
| @@ -155,9 +167,17 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||||
| Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); | Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); | ||||
| for (WxLegionActivityOrder legionActivityOrder : wxLegionActivityOrders) { | for (WxLegionActivityOrder legionActivityOrder : wxLegionActivityOrders) { | ||||
| WxVtwoActivityOrder vtwoActivityOrder = vtwoActivityOrderMap.get(legionActivityOrder.getId()); | |||||
| if(vtwoActivityOrder != null){ | |||||
| legionActivityOrder.setLotteryNum(vtwoActivityOrder.getLotteryNum()); | |||||
| legionActivityOrder.setLotteryCount(vtwoActivityOrder.getLotteryCount()); | |||||
| legionActivityOrder.setAnniversaryLotteryNum(vtwoActivityOrder.getAnniversaryLotteryNum()); | |||||
| } | |||||
| if(legionActivityOrder.getMerchantId() != null){ | if(legionActivityOrder.getMerchantId() != null){ | ||||
| WxMerchant merchant = merchantMap.get(legionActivityOrder.getMerchantId()); | WxMerchant merchant = merchantMap.get(legionActivityOrder.getMerchantId()); | ||||
| legionActivityOrder.setMerchantName(merchant.getName()); | legionActivityOrder.setMerchantName(merchant.getName()); | ||||
| legionActivityOrder.setMerchantShopNum(merchantShopNumberMap.get(legionActivityOrder.getMerchantId())); | |||||
| } | } | ||||
| if(legionActivityOrder.getAuditBy() != null){ | if(legionActivityOrder.getAuditBy() != null){ | ||||
| legionActivityOrder.setAuditByName(userMap.get(legionActivityOrder.getAuditBy()).getName()); | legionActivityOrder.setAuditByName(userMap.get(legionActivityOrder.getAuditBy()).getName()); | ||||
| @@ -115,17 +115,24 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl<WxVtwo | |||||
| private void handleOrderRatio(List<WxVtwoActivityOrder> orderList){ | private void handleOrderRatio(List<WxVtwoActivityOrder> orderList){ | ||||
| BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | ||||
| int size = orderList.size() - 1; | |||||
| BigDecimal lastRatio = new BigDecimal(100); | |||||
| for(int i=0; i<size; i++){ | |||||
| WxVtwoActivityOrder order = orderList.get(i); | |||||
| for (WxVtwoActivityOrder order : orderList){ | |||||
| BigDecimal orderRatio = order.getOrderMoney() | BigDecimal orderRatio = order.getOrderMoney() | ||||
| .divide(orderSumMoney,4, RoundingMode.HALF_UP) | |||||
| .divide(orderSumMoney,6, RoundingMode.HALF_UP) | |||||
| .multiply(new BigDecimal(100)); | .multiply(new BigDecimal(100)); | ||||
| order.setOrderRatio(orderRatio); | order.setOrderRatio(orderRatio); | ||||
| lastRatio = lastRatio.subtract(orderRatio); | |||||
| } | } | ||||
| orderList.get(size).setOrderRatio(lastRatio); | |||||
| // int size = orderList.size() - 1; | |||||
| // BigDecimal lastRatio = new BigDecimal(100); | |||||
| // for(int i=0; i<size; i++){ | |||||
| // WxVtwoActivityOrder order = orderList.get(i); | |||||
| // BigDecimal orderRatio = order.getOrderMoney() | |||||
| // .divide(orderSumMoney,4, RoundingMode.HALF_UP) | |||||
| // .multiply(new BigDecimal(100)); | |||||
| // order.setOrderRatio(orderRatio); | |||||
| // lastRatio = lastRatio.subtract(orderRatio); | |||||
| // } | |||||
| // orderList.get(size).setOrderRatio(lastRatio); | |||||
| } | } | ||||
| @@ -173,8 +173,12 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl<WxVtwoActivityOr | |||||
| if(activityOrder.getAuditStatus() == null){ | if(activityOrder.getAuditStatus() == null){ | ||||
| activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); | activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); | ||||
| } | } | ||||
| activityOrder.setCreateDate(now); | |||||
| activityOrder.setUpdateDate(now); | |||||
| if(activityOrder.getCreateDate() == null){ | |||||
| activityOrder.setCreateDate(now); | |||||
| } | |||||
| if (activityOrder.getUpdateDate() == null){ | |||||
| activityOrder.setUpdateDate(now); | |||||
| } | |||||
| wxVtwoActivityOrderMapper.insert(activityOrder); | wxVtwoActivityOrderMapper.insert(activityOrder); | ||||
| } | } | ||||
| else{ | else{ | ||||
| @@ -500,6 +504,15 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl<WxVtwoActivityOr | |||||
| return Collections.emptyList(); | return Collections.emptyList(); | ||||
| } | } | ||||
| @Override | |||||
| public Map<Long, WxVtwoActivityOrder> findFromMap(WxVtwoActivityOrder record) { | |||||
| List<WxVtwoActivityOrder> list = wxVtwoActivityOrderMapper.findList(record); | |||||
| if(list != null && !list.isEmpty()){ | |||||
| return list.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getFromOrderId, Function.identity())); | |||||
| } | |||||
| return Collections.emptyMap(); | |||||
| } | |||||
| } | } | ||||
| @@ -59,7 +59,7 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB | |||||
| && cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){ | && cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){ | ||||
| cashBackPrice = cashBackAward.getCashBackLimit(); | cashBackPrice = cashBackAward.getCashBackLimit(); | ||||
| } | } | ||||
| cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); | |||||
| cashBackPrice = awardsRulePrice(cashBackPrice,EnumOfflineActivityAwardsRule.DEF.getCode()); | |||||
| if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ | if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ | ||||
| cashBackTotal = cashBackTotal.add(cashBackPrice); | cashBackTotal = cashBackTotal.add(cashBackPrice); | ||||
| WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); | WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); | ||||
| @@ -86,7 +86,7 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB | |||||
| } | } | ||||
| if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ | if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ | ||||
| BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); | BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); | |||||
| cashBackPrice = awardsRulePrice(cashBackPrice,EnumOfflineActivityAwardsRule.DEF.getCode()); | |||||
| if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ | if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ | ||||
| cashBackTotal = cashBackTotal.add(cashBackPrice); | cashBackTotal = cashBackTotal.add(cashBackPrice); | ||||
| @@ -110,7 +110,7 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB | |||||
| if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ | if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ | ||||
| BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | ||||
| BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); | BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); | ||||
| cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); | |||||
| cashBackPrice = awardsRulePrice(cashBackPrice,EnumOfflineActivityAwardsRule.DEF.getCode()); | |||||
| if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ | if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ | ||||
| cashBackTotal = cashBackTotal.add(cashBackPrice); | cashBackTotal = cashBackTotal.add(cashBackPrice); | ||||
| @@ -126,20 +126,34 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB | |||||
| } | } | ||||
| } | } | ||||
| //计算返现金额最大限制 | |||||
| BigDecimal prop = BigDecimal.ONE; | |||||
| //返现总金额 | |||||
| cashBackTotal = awardsRulePrice(cashBackTotal,cashBackActivity.getCashBackRule()); | |||||
| if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ | if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ | ||||
| prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4, RoundingMode.HALF_UP); | |||||
| } | |||||
| if(prop.compareTo(BigDecimal.ONE) < 0){ | |||||
| cashBackTotal = awardsRulePrice(cashBackActivity.getCashBackLimit(),cashBackActivity.getCashBackRule()); | |||||
| //按返现金额进行分摊 | |||||
| BigDecimal sumCashBack = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | ||||
| grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule())); | |||||
| BigDecimal cashBackRatio = grantAward.getCashBack() | |||||
| .divide(sumCashBack,6, RoundingMode.HALF_UP); | |||||
| grantAward.setCashBack(awardsRulePrice(cashBackTotal.multiply(cashBackRatio),EnumOfflineActivityAwardsRule.DEF.getCode())); | |||||
| } | } | ||||
| } | } | ||||
| BigDecimal realCashBackTotal = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| // BigDecimal prop = BigDecimal.ONE; | |||||
| // if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ | |||||
| // prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,6, RoundingMode.HALF_UP); | |||||
| // } | |||||
| // | |||||
| // if(prop.compareTo(BigDecimal.ONE) < 0){ | |||||
| // for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | |||||
| // grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule())); | |||||
| // } | |||||
| // } | |||||
| // BigDecimal realCashBackTotal = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); | activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); | ||||
| activityGrant.setCashBack(realCashBackTotal); | |||||
| activityGrant.setCashBack(cashBackTotal); | |||||
| if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ | if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ | ||||
| //单独算税点 | //单独算税点 | ||||
| @@ -166,10 +180,16 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB | |||||
| .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); | .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); | ||||
| } | } | ||||
| //税点分摊到发奖上面 | //税点分摊到发奖上面 | ||||
| BigDecimal sumCashBack = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | ||||
| BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);; | |||||
| grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP)); | |||||
| BigDecimal cashBackRatio = grantAward.getCashBack() | |||||
| .divide(sumCashBack,6, RoundingMode.HALF_UP); | |||||
| grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(cashBackRatio).setScale(2, RoundingMode.HALF_UP)); | |||||
| } | } | ||||
| // for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | |||||
| // BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);; | |||||
| // grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP)); | |||||
| // } | |||||
| } | } | ||||
| activityGrant.setGrantAwardList(grantAwardList); | activityGrant.setGrantAwardList(grantAwardList); | ||||
| @@ -94,6 +94,13 @@ | |||||
| and `audit_status` = #{auditStatus} | and `audit_status` = #{auditStatus} | ||||
| </if> | </if> | ||||
| <if test=" null != fromOrderIds "> | |||||
| and from_order_id in | |||||
| <foreach collection="fromOrderIds" index="index" item="foidItem" open="(" separator="," close=")"> | |||||
| #{foidItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != merchantIdList "> | <if test=" null != merchantIdList "> | ||||
| and merchant_id in | and merchant_id in | ||||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | ||||