|
|
|
@@ -10,6 +10,7 @@ import com.iformall.common.IdWorker; |
|
|
|
import com.iformall.common.Result; |
|
|
|
import com.iformall.common.ResultData; |
|
|
|
import com.iformall.common.SysConfigConstant; |
|
|
|
import com.iformall.domain.dto.ContractJoinRenevueUpFeesDTO; |
|
|
|
import com.iformall.domain.po.MallUserInfo; |
|
|
|
import com.iformall.domain.po.SysConfig; |
|
|
|
import com.iformall.domain.po.WxAllBill; |
|
|
|
@@ -1027,23 +1028,42 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
}else { |
|
|
|
sb.append("跳点规则计算金额:"+jumppay.toPlainString()+",扣点规则计算金额:"+needpay+"."); |
|
|
|
} |
|
|
|
BigDecimal uneedPay = getJoinRenevueUpFeesReceivePayTotal(rentcontract,startime,endtime,true); |
|
|
|
if (null != uneedPay && uneedPay.compareTo(new BigDecimal(0)) > 0 ){ |
|
|
|
sb.append("参与取高款项计算金额:"+uneedPay.toPlainString()); |
|
|
|
if (uneedPay.compareTo(new BigDecimal(needpay)) > 0 ) { |
|
|
|
needpay = uneedPay.toPlainString(); |
|
|
|
boolean createNewBill = true; |
|
|
|
ContractJoinRenevueUpFeesDTO dto = getJoinRenevueUpFeesReceivePayTotal(rentcontract,startime,endtime); |
|
|
|
if (null != dto) { |
|
|
|
BigDecimal uneedPay = dto.getNeedPay(); |
|
|
|
if (null != uneedPay && uneedPay.compareTo(new BigDecimal(0)) > 0 ){ |
|
|
|
sb.append("参与取高款项计算金额:"+uneedPay.toPlainString()); |
|
|
|
if (uneedPay.compareTo(new BigDecimal(needpay)) >= 0 ) { |
|
|
|
//取高比扣点高 |
|
|
|
createNewBill = false; |
|
|
|
needpay = uneedPay.toPlainString(); |
|
|
|
//此处取高的比提成高,如果之前有将参与取高的账单设置为已删除,则需要恢复 |
|
|
|
wxAllBillMapper.setIsDel(rentcontract.getTenantId(),dto.getBillIds(),EnumYesOrNo.NO.getCode(),EnumYesOrNo.YES.getCode()); |
|
|
|
}else { |
|
|
|
//取高比扣点低 |
|
|
|
if (null != dto.getBillIds() && dto.getBillIds().size() > 0 ) { |
|
|
|
//如果提成的比参与取高的款项高,将这些参与取高的账单设置为已删除 |
|
|
|
wxAllBillMapper.setIsDel(rentcontract.getTenantId(),dto.getBillIds(),EnumYesOrNo.YES.getCode(),null); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
//无取高费用 |
|
|
|
if (null != dto.getBillIds() && dto.getBillIds().size() > 0 ) { |
|
|
|
//如果提成的比参与取高的款项高,将这些参与取高的账单设置为已删除 |
|
|
|
wxAllBillMapper.setIsDel(rentcontract.getTenantId(),dto.getBillIds(),EnumYesOrNo.YES.getCode(),null); |
|
|
|
} |
|
|
|
} |
|
|
|
sb.append("取高后总金额为:["+needpay+"]."); |
|
|
|
} |
|
|
|
|
|
|
|
sb.append("取高后总金额为:["+needpay+"]."); |
|
|
|
//保存销售额 |
|
|
|
addRevenueSales(rentcontract,startime,endtime,needpay,sales,saleDecimalValid); |
|
|
|
return handleBills(user,sb,rentcontract,needpay,startime,endtime,EnumBillExtraCreateFrom.RNET_REVENUE_SALES); |
|
|
|
return handleBills(createNewBill,user,sb,rentcontract,needpay,startime,endtime,EnumBillExtraCreateFrom.RNET_REVENUE_SALES); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private BigDecimal getJoinRenevueUpFeesReceivePayTotal(WxRentContract rentcontract,Date begin,Date end,boolean isEqualTime) { |
|
|
|
private ContractJoinRenevueUpFeesDTO getJoinRenevueUpFeesReceivePayTotal(WxRentContract rentcontract,Date begin,Date end) { |
|
|
|
//如果是取高的,则取高计算 |
|
|
|
if (rentcontract.getType().intValue() == EnumAgileContractType.RENEVUE_UP.getCode().intValue()) { |
|
|
|
//查询所有参与取高的款项的账单 |
|
|
|
@@ -1057,21 +1077,35 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
udbill.updateTenantInfo(rentcontract); |
|
|
|
udbill.setRentContractId(rentcontract.getId()); |
|
|
|
udbill.setIsPreview(EnumYesOrNo.NO.getCode()); |
|
|
|
//此处应该查询所有的,因为有可能是是重新录入销售额,之前的账单已经被设位置已删除 |
|
|
|
//udbill.setIsDel(EnumYesOrNo.NO.getCode()); |
|
|
|
udbill.setEnergyFeesIds(udlist); |
|
|
|
if (isEqualTime) { |
|
|
|
udbill.setStarttimeEqual(begin); |
|
|
|
udbill.setEndtimeEqual(end); |
|
|
|
}else { |
|
|
|
udbill.setStarttime(rentcontract.getYearsBegin()); |
|
|
|
udbill.setEndtime(rentcontract.getYearsEnd()); |
|
|
|
}; |
|
|
|
udbill.setIsJoinRenevue(EnumYesOrNo.YES.getCode()); |
|
|
|
udbill.setStarttimeEqual(begin); |
|
|
|
udbill.setEndtimeEqual(end); |
|
|
|
BigDecimal uneedPay = wxAllBillMapper.getReceivePaySum(udbill); |
|
|
|
return uneedPay; |
|
|
|
ContractJoinRenevueUpFeesDTO dto = new ContractJoinRenevueUpFeesDTO(); |
|
|
|
dto.setNeedPay(uneedPay); |
|
|
|
dto.setBillIds(wxAllBillMapper.findIdList(udbill)); |
|
|
|
return dto; |
|
|
|
} |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
private BigDecimal getAllRenevueBillsReceivePayTotal(WxRentContract rentcontract,Date begin,Date end) { |
|
|
|
WxAllBill udbill = new WxAllBill(); |
|
|
|
udbill.updateTenantInfo(rentcontract); |
|
|
|
udbill.setRentContractId(rentcontract.getId()); |
|
|
|
udbill.setIsPreview(EnumYesOrNo.NO.getCode()); |
|
|
|
udbill.setIsDel(EnumYesOrNo.NO.getCode()); |
|
|
|
udbill.setQueryNeedHuiSuanBills(EnumYesOrNo.YES.getCode()); |
|
|
|
udbill.setStarttime(begin); |
|
|
|
udbill.setEndtime(end); |
|
|
|
BigDecimal uneedPay = wxAllBillMapper.getReceivePaySum(udbill); |
|
|
|
return uneedPay; |
|
|
|
} |
|
|
|
|
|
|
|
private void addRevenueSales(WxRentContract rentcontract,Date starttime,Date endtime,String needpay,String sales,BigDecimal saleDecimalValid) { |
|
|
|
WxRentContractRevenueSales rs = new WxRentContractRevenueSales(); |
|
|
|
rs.updateTenantInfo(rentcontract); |
|
|
|
@@ -1103,37 +1137,39 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private WxRentContractRevenueSetSalesVo handleBills(MallUserInfo user,StringBuffer sb,WxRentContract rentcontract, String needpay,Date startDate,Date endDate, |
|
|
|
private WxRentContractRevenueSetSalesVo handleBills(boolean createNewBill,MallUserInfo user,StringBuffer sb,WxRentContract rentcontract, String needpay,Date startDate,Date endDate, |
|
|
|
EnumBillExtraCreateFrom createFrom) { |
|
|
|
//根据设置的比例海生成对应的账单. |
|
|
|
List<WxRentContractAgileRenevueFees> fees = wxAgileContractService.findRenevueFeesListByContract(rentcontract.getId(), rentcontract); |
|
|
|
if (null == fees) { |
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"没有设置扣点款项"); |
|
|
|
} |
|
|
|
List<Long> shopIdList = rentcontract.shopIdsByRentInfo(); |
|
|
|
Map<Long, BigDecimal> shopAreaRateMap = rentcontract.getRentShopArea(); |
|
|
|
WxShopUsers suq = new WxShopUsers(); |
|
|
|
suq.updateTenantInfo(rentcontract); |
|
|
|
suq.setShopIds(shopIdList); |
|
|
|
suq.setStatus(EnumShopUsersStatus.LIVE.getCode()); |
|
|
|
Map<Long,WxShopUsers> shopUserMap = wxShopService.getShopUserMap(suq); |
|
|
|
WxShop sq = new WxShop(); |
|
|
|
sq.updateTenantInfo(sq); |
|
|
|
sq.setIds(shopIdList); |
|
|
|
Map<Long, WxShop> shopMap = wxShopService.findShopMap(sq); |
|
|
|
|
|
|
|
List<WxAllBill> allbill = new ArrayList<WxAllBill>(); |
|
|
|
for (int i = 0 ; i < fees.size(); i++ ) { |
|
|
|
WxRentContractAgileRenevueFees fee = fees.get(i); |
|
|
|
//更新账单费用 |
|
|
|
BigDecimal fneedpay = new BigDecimal(needpay).multiply(new BigDecimal(fee.getRate()).divide(new BigDecimal(100))).setScale(rentcontract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); |
|
|
|
List<WxAllBill> renBill = generateRenevueBill(fee.getFeesId(),user,shopIdList,shopMap,shopUserMap,shopAreaRateMap,rentcontract,fneedpay,fee.getRate(),startDate,endDate,createFrom); |
|
|
|
allbill.addAll(renBill); |
|
|
|
} |
|
|
|
|
|
|
|
WxRentContractRevenueSetSalesVo vo = new WxRentContractRevenueSetSalesVo(); |
|
|
|
vo.setTotal(needpay); |
|
|
|
vo.setBillList(allbill);; |
|
|
|
|
|
|
|
if (createNewBill) { |
|
|
|
//根据设置的比例海生成对应的账单. |
|
|
|
List<WxRentContractAgileRenevueFees> fees = wxAgileContractService.findRenevueFeesListByContract(rentcontract.getId(), rentcontract); |
|
|
|
if (null == fees) { |
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"没有设置扣点款项"); |
|
|
|
} |
|
|
|
List<Long> shopIdList = rentcontract.shopIdsByRentInfo(); |
|
|
|
Map<Long, BigDecimal> shopAreaRateMap = rentcontract.getRentShopArea(); |
|
|
|
WxShopUsers suq = new WxShopUsers(); |
|
|
|
suq.updateTenantInfo(rentcontract); |
|
|
|
suq.setShopIds(shopIdList); |
|
|
|
suq.setStatus(EnumShopUsersStatus.LIVE.getCode()); |
|
|
|
Map<Long,WxShopUsers> shopUserMap = wxShopService.getShopUserMap(suq); |
|
|
|
WxShop sq = new WxShop(); |
|
|
|
sq.updateTenantInfo(sq); |
|
|
|
sq.setIds(shopIdList); |
|
|
|
Map<Long, WxShop> shopMap = wxShopService.findShopMap(sq); |
|
|
|
|
|
|
|
List<WxAllBill> allbill = new ArrayList<WxAllBill>(); |
|
|
|
for (int i = 0 ; i < fees.size(); i++ ) { |
|
|
|
WxRentContractAgileRenevueFees fee = fees.get(i); |
|
|
|
//更新账单费用 |
|
|
|
BigDecimal fneedpay = new BigDecimal(needpay).multiply(new BigDecimal(fee.getRate()).divide(new BigDecimal(100))).setScale(rentcontract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); |
|
|
|
List<WxAllBill> renBill = generateRenevueBill(fee.getFeesId(),user,shopIdList,shopMap,shopUserMap,shopAreaRateMap,rentcontract,fneedpay,fee.getRate(),startDate,endDate,createFrom); |
|
|
|
allbill.addAll(renBill); |
|
|
|
} |
|
|
|
vo.setBillList(allbill);; |
|
|
|
} |
|
|
|
return vo; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -1256,12 +1292,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//查询所有参与取高的账单金额 |
|
|
|
BigDecimal receivepay = getJoinRenevueUpFeesReceivePayTotal(rentcontract,rentcontract.getYearsBegin(),rentcontract.getYearsEnd(),false); |
|
|
|
//查询未删除的参与扣点计算的非押金账单或者录入销售额生成的账单之和 |
|
|
|
BigDecimal receivepay = getAllRenevueBillsReceivePayTotal(rentcontract,rentcontract.getYearsBegin(),rentcontract.getYearsEnd()); |
|
|
|
if (null == receivepay ){ |
|
|
|
receivepay = new BigDecimal(0); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
WxRentContractYearsSumVo vo = new WxRentContractYearsSumVo(); |
|
|
|
vo.setTotalSales(sum.toPlainString()); |
|
|
|
vo.setTotalRevenue(jumpRevenuePay.toPlainString()); |
|
|
|
@@ -1277,7 +1313,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
|
|
|
|
private WxRentContractRevenueSetSalesVo handelHuiSuanBills(MallUserInfo user,WxRentContract rentcontract,String owe) { |
|
|
|
StringBuffer sb = new StringBuffer(""); |
|
|
|
return handleBills(user,sb,rentcontract,owe,rentcontract.getYearsBegin(),rentcontract.getYearsEnd(),EnumBillExtraCreateFrom.RNET_TIAODIAN_HUISUAN); |
|
|
|
return handleBills(true,user,sb,rentcontract,owe,rentcontract.getYearsBegin(),rentcontract.getYearsEnd(),EnumBillExtraCreateFrom.RNET_TIAODIAN_HUISUAN); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|