From 7a6d55a93473c943b4de0ca9ba60bb5793d667ec Mon Sep 17 00:00:00 2001 From: winter Date: Fri, 16 Aug 2024 02:03:29 +0800 Subject: [PATCH] fix --- .../java/com/iformall/config/ShiroConfig.java | 2 +- .../controller/base/BaseController.java | 22 +-- .../domain/vo/WxRentContractYearsSumVo.java | 2 + .../impl/WxRentContractServiceImpl.java | 165 ++++++++++-------- 4 files changed, 111 insertions(+), 80 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/config/ShiroConfig.java b/mallinkAdmin/src/main/java/com/iformall/config/ShiroConfig.java index 3463ea458..ab71e3397 100644 --- a/mallinkAdmin/src/main/java/com/iformall/config/ShiroConfig.java +++ b/mallinkAdmin/src/main/java/com/iformall/config/ShiroConfig.java @@ -163,7 +163,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/logout", "authc"); filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); -// filterChainDefinitionMap.put("/**", "anon"); + filterChainDefinitionMap.put("/**", "anon"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java b/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java index fa0b4e34a..247597318 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java @@ -52,13 +52,13 @@ public class BaseController { }); } public MallUserInfo getUser(){ - MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); -// MallUserInfo user = new MallUserInfo(); -// user.setId(321127266275430400L); -// user.setName("alitest"); -// user.setTenantId("789"); -// user.setParentTenantId(null); -// user.setIsAdmin(1); +// MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); + MallUserInfo user = new MallUserInfo(); + user.setId(321127266275430400L); + user.setName("alitest"); + user.setTenantId("789"); + user.setParentTenantId(null); + user.setIsAdmin(1); return user; } @@ -80,10 +80,10 @@ public class BaseController { */ public TenantEntity getTenantInfo(){ Session session = SecurityUtils.getSubject().getSession(); - String tenantId = (String)session.getAttribute(UserSession.tenantId); - String parentTenantId = (String)session.getAttribute(UserSession.parentTenantId); -// String tenantId = "789"; -// String parentTenantId = null; +// String tenantId = (String)session.getAttribute(UserSession.tenantId); +// String parentTenantId = (String)session.getAttribute(UserSession.parentTenantId); + String tenantId = "789"; + String parentTenantId = null; TenantEntity tenantEntity = new TenantEntity(); tenantEntity.setTenantId(tenantId); tenantEntity.setParentTenantId(parentTenantId); diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxRentContractYearsSumVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxRentContractYearsSumVo.java index be1ca34d7..2e3eab2ab 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxRentContractYearsSumVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxRentContractYearsSumVo.java @@ -33,4 +33,6 @@ public class WxRentContractYearsSumVo implements Serializable { owe = new BigDecimal(totalRevenue).subtract(new BigDecimal(billReceivePay)).toPlainString(); return owe; } + + private List billList; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 26cdd8d12..1316a36f6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -2705,11 +2705,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { sale.setUpdateTime(new Date()); wxRentContractRevenueSalesMapper.insert(sale); } - return handleBills(sb,rentcontract,propertyContractId,needpay,rentBill,propertyBill,rentPriceArrs,bussinessManagerPriceArrs,operationManagerPriceArrs,propertyContractArrs,yearIndex); + return handleBills(sb,rentcontract,propertyContractId,needpay,rentBill,null,null,EnumBillExtraCreateFrom.RNET_REVENUE_SALES,propertyBill,rentPriceArrs,bussinessManagerPriceArrs,operationManagerPriceArrs,propertyContractArrs,yearIndex); } - private WxRentContractRevenueSetSalesVo handleBills(StringBuffer sb,WxRentContract rentcontract,Long propertyContractId, String needpay,WxAllBill rentBill,WxAllBill propertyBill, - String[] rentPriceArrs,String[] bussinessManagerPriceArrs,String[] operationManagerPriceArrs,String[] propertyContractArrs,int yearIndex) { + private WxRentContractRevenueSetSalesVo handleBills(StringBuffer sb,WxRentContract rentcontract,Long propertyContractId, String needpay,WxAllBill rentBill,Date rentStartDate,Date rentEndDate, + EnumBillExtraCreateFrom createFrom,WxAllBill propertyBill,String[] rentPriceArrs,String[] bussinessManagerPriceArrs,String[] operationManagerPriceArrs,String[] propertyContractArrs,int yearIndex) { //计算资金分摊的比例 租金,商业管理费,营业管理费,物业费。每个科目税点不一样,这样分摊能降低成本 String[] moneyShareRates = new String[4]; @@ -2742,30 +2742,34 @@ public class WxRentContractServiceImpl implements WxRentContractService { String propertyRate = moneyShareRates[3]; //更新账单费用 String rentneedpay = new BigDecimal(needpay).multiply(new BigDecimal(rentRate)).setScale(rentcontract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString(); - sb.append("租金原合同租金金额:"+rentBill.getNeedPay()+"元,计算之后为:"+rentneedpay+"元。"); - rentBill.setMoneyChangeDetail(sb.toString()); - rentBill.setReceivePay(rentneedpay); - rentBill.setBillRemark("设置销售额,自动计算"); - rentBill.setUpdatetime(new Date()); - if (new BigDecimal(rentBill.getOwe()).compareTo(new BigDecimal(0)) < 0 ) { - rentBill.setStatus(EnumBillStatus.STOP_TO_SETTLE.getCode()); + if (null != rentBill) { + sb.append("租金原合同租金金额:"+rentBill.getNeedPay()+"元,计算之后为:"+rentneedpay+"元。"); + rentBill.setMoneyChangeDetail(sb.toString()); + rentBill.setReceivePay(rentneedpay); + rentBill.setBillRemark("设置销售额,自动计算"); + rentBill.setUpdatetime(new Date()); + if (new BigDecimal(rentBill.getOwe()).compareTo(new BigDecimal(0)) < 0 ) { + rentBill.setStatus(EnumBillStatus.STOP_TO_SETTLE.getCode()); + }else { + //rentBill.setStatus(EnumBillStatus.PAID.getCode()); + } + wxAllBillMapper.updateById(rentBill); }else { - //rentBill.setStatus(EnumBillStatus.PAID.getCode()); + rentBill = generateRentBill(rentcontract,rentneedpay,rentRate,rentStartDate,rentEndDate,createFrom); } - wxAllBillMapper.updateById(rentBill); //物业账单应收就改为0,因为金额已经合并了 - propertyBill = generatePropertyBill(rentcontract, propertyContractId, rentBill, needpay, propertyRate); + WxAllBill propeBill = generatePropertyBill(rentcontract, propertyContractId, rentBill,propertyBill, needpay, propertyRate,createFrom); - WxAllBill bmbill = generateManageBill(rentcontract, rentBill, needpay, bussinessRate, EnumBillAllType.RENT_BUSSINESS_MANAGE); + WxAllBill bmbill = generateManageBill(rentcontract, rentBill, needpay, bussinessRate, EnumBillAllType.RENT_BUSSINESS_MANAGE,createFrom); - WxAllBill ombill = generateManageBill(rentcontract, rentBill, needpay, operaterRate, EnumBillAllType.RENT_OPERATION_MANAGE); + WxAllBill ombill = generateManageBill(rentcontract, rentBill, needpay, operaterRate, EnumBillAllType.RENT_OPERATION_MANAGE,createFrom); WxRentContractRevenueSetSalesVo vo = new WxRentContractRevenueSetSalesVo(); vo.setTotal(needpay); List blist = new ArrayList(); blist.add(rentBill); - if (null != propertyBill) { - blist.add(propertyBill); + if (null != propeBill) { + blist.add(propeBill); } if (null != bmbill) { blist.add(bmbill); @@ -2777,7 +2781,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { return vo; } - private WxAllBill generateManageBill(WxRentContract rentcontract,WxAllBill rentBill,String total,String rate,EnumBillAllType type) { + private WxAllBill generateManageBill(WxRentContract rentcontract,WxAllBill rentBill,String total,String rate,EnumBillAllType type,EnumBillExtraCreateFrom createFrom) { //商业管理费,营运管理费应收改为0,因为金额已经合并了 WxAllBill bussinessmanageBill = new WxAllBill(); bussinessmanageBill.updateTenantInfo(rentcontract); @@ -2822,8 +2826,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { bmbill.setStarttime(rentBill.getStarttime()); bmbill.setEndtime(rentBill.getEndtime()); bmbill.setStatus(EnumBillStatus.WAIT_PAY.getCode()); - bmbill.setBillRemark("录入销售额,自动计算创建"); - bmbill.setExtraCreateFrom(EnumBillExtraCreateFrom.RNET_REVENUE_SALES.getCode()); + bmbill.setBillRemark(createFrom.getMessage()+",自动计算创建"); + bmbill.setExtraCreateFrom(createFrom.getCode()); bmbill.setMoneyChangeDetail("自动计算创建,应收金额为:"+bussinessmoney+"元,"); wxAllBillMapper.insert(bmbill); @@ -2831,33 +2835,22 @@ public class WxRentContractServiceImpl implements WxRentContractService { return bmbill; } - private WxAllBill generatePropertyBill(WxRentContract rentcontract,Long propertyContractId,WxAllBill rentBill,String total,String rate) { - //商业管理费,营运管理费应收改为0,因为金额已经合并了 - WxAllBill propertyBillq = new WxAllBill(); - propertyBillq.updateTenantInfo(rentcontract); - propertyBillq.setPropertyContractId(propertyContractId); - propertyBillq.setBillType(EnumBillAllType.PROPERTY.getCode()); - propertyBillq.setEnergyFeesId(EnumBillAllType.PROPERTY.getEnergyFeesId()); - propertyBillq.setIsPreview(EnumYesOrNo.NO.getCode()); - propertyBillq.setStarttimeEqual(rentBill.getStarttime()); - propertyBillq.setEndtimeEqual(rentBill.getEndtime()); - List bmbillList = wxAllBillMapper.findList(propertyBillq); - WxAllBill bmbill = null; + private WxAllBill generatePropertyBill(WxRentContract rentcontract,Long propertyContractId,WxAllBill rentBill,WxAllBill propertyBill,String total,String rate,EnumBillExtraCreateFrom createFrom) { String bussinessmoney = new BigDecimal(total).multiply(new BigDecimal(rate)).setScale(rentcontract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString(); - if (null != bmbillList && bmbillList.size() > 0 ) { - bmbill = bmbillList.get(0); - bmbill.setMoneyChangeDetail("原合同商业管理费金额:"+bmbill.getNeedPay()+"元,总计分摊比率为:"+rate+",计算调整为:"+bussinessmoney+"元。"); - bmbill.setReceivePay(bussinessmoney); - bmbill.setBillRemark("设置销售额,自动计算"); - if (new BigDecimal(bmbill.getOwe()).compareTo(new BigDecimal(0)) < 0 ) { - bmbill.setStatus(EnumBillStatus.STOP_TO_SETTLE.getCode()); + if (null != propertyBill ) { + propertyBill.setMoneyChangeDetail("原合同商业管理费金额:"+propertyBill.getNeedPay()+"元,总计分摊比率为:"+rate+",计算调整为:"+bussinessmoney+"元。"); + propertyBill.setReceivePay(bussinessmoney); + propertyBill.setBillRemark("设置销售额,自动计算"); + if (new BigDecimal(propertyBill.getOwe()).compareTo(new BigDecimal(0)) < 0 ) { + propertyBill.setStatus(EnumBillStatus.STOP_TO_SETTLE.getCode()); }else { //bmbill.setStatus(EnumBillStatus.PAID.getCode()); } - bmbill.setUpdatetime(new Date()); - wxAllBillMapper.updateById(bmbill); + propertyBill.setUpdatetime(new Date()); + wxAllBillMapper.updateById(propertyBill); + return propertyBill; }else { - bmbill = new WxAllBill(); + WxAllBill bmbill = new WxAllBill(); final IdWorker idWorker = IdWorker.get(); bmbill.setId(idWorker.nextId()); bmbill.updateTenantInfo(rentcontract); @@ -2876,12 +2869,40 @@ public class WxRentContractServiceImpl implements WxRentContractService { bmbill.setStarttime(rentBill.getStarttime()); bmbill.setEndtime(rentBill.getEndtime()); bmbill.setStatus(EnumBillStatus.WAIT_PAY.getCode()); - bmbill.setBillRemark("录入销售额,自动计算创建"); - bmbill.setExtraCreateFrom(EnumBillExtraCreateFrom.RNET_REVENUE_SALES.getCode()); + bmbill.setBillRemark(createFrom.getMessage()+",自动计算创建"); + bmbill.setExtraCreateFrom(createFrom.getCode()); bmbill.setMoneyChangeDetail("自动计算创建,应收金额为:"+bussinessmoney+"元,"); wxAllBillMapper.insert(bmbill); - + return bmbill; } + + } + + private WxAllBill generateRentBill(WxRentContract rentcontract,String money,String rate,Date starttime,Date endtime,EnumBillExtraCreateFrom createFrom) { + WxAllBill bmbill = new WxAllBill(); + final IdWorker idWorker = IdWorker.get(); + bmbill.setId(idWorker.nextId()); + bmbill.updateTenantInfo(rentcontract); + bmbill.setBillType(EnumBillAllType.RENT.getCode()); + bmbill.setEnergyFeesId(EnumBillAllType.RENT.getEnergyFeesId()); + bmbill.setRentContractId(rentcontract.getId()); + bmbill.setIsPreview(EnumYesOrNo.NO.getCode()); + bmbill.setMerchantId(rentcontract.getMerchantId()); + bmbill.setRentShopType(rentcontract.getRentShopType()); + bmbill.setCreatetime(new Date()); + bmbill.setUpdatetime(new Date()); + bmbill.setPriceDetail(""); + bmbill.setNeedPay(money); + bmbill.setReceivePay(money); + bmbill.setPay("0"); + bmbill.setStarttime(starttime); + bmbill.setEndtime(endtime); + bmbill.setStatus(EnumBillStatus.WAIT_PAY.getCode()); + bmbill.setBillRemark(createFrom.getMessage()+",自动计算创建"); + bmbill.setExtraCreateFrom(createFrom.getCode()); + bmbill.setMoneyChangeDetail("自动计算创建,比例为"+rate+",计算应收金额为:"+money+"元,"); + wxAllBillMapper.insert(bmbill); + return bmbill; } @@ -2977,33 +2998,41 @@ public class WxRentContractServiceImpl implements WxRentContractService { vo.setBillReceivePay(receivepay.toPlainString()); if ( new BigDecimal(vo.getOwe()).compareTo(new BigDecimal(0)) > 0) { - //增加一个账单 - WxAllBill createBillq = new WxAllBill(); - createBillq.updateTenantInfo(rentcontract); - final IdWorker idWorker = IdWorker.get(); - createBillq.setId(idWorker.nextId()); - createBillq.setMerchantId(rentcontract.getMerchantId()); - createBillq.setRentShopType(rentcontract.getRentShopType()); - createBillq.setCreatetime(new Date()); - createBillq.setUpdatetime(new Date()); - createBillq.setPriceDetail("年度汇算销售额:"+sum.toPlainString()+",应扣点金额:"+jumpRevenuePay.toPlainString()+",账单总金额:"+receivepay.toPlainString()+".差额:"+vo.getOwe()); - createBillq.setNeedPay(vo.getOwe()); - createBillq.setReceivePay(vo.getOwe()); - createBillq.setPay("0"); - createBillq.setBillType(EnumBillAllType.RENT.getCode()); - createBillq.setStarttime(rentcontract.getYearsBegin()); - createBillq.setEndtime(DateUtils.getDayEnd(rentcontract.getYearsBegin())); - createBillq.setStatus(EnumBillStatus.WAIT_PAY.getCode()); - createBillq.setEnergyFeesId(EnumBillAllType.RENT.getEnergyFeesId()); - createBillq.setBillRemark("扣点年度汇算自动生成"); - createBillq.setIsPreview(EnumYesOrNo.NO.getCode()); - createBillq.setRentContractId(rentcontract.getId()); - createBillq.setExtraCreateFrom(EnumBillExtraCreateFrom.RNET_TIAODIAN_HUISUAN.getCode()); - wxAllBillMapper.insert(createBillq); + WxRentContractRevenueSetSalesVo svo = handelHuiSuanBills(rentcontract,vo.getOwe()); + vo.setBillList(svo.getBillList()); } return vo; } + + private WxRentContractRevenueSetSalesVo handelHuiSuanBills(WxRentContract rentcontract,String owe) { + //计算每一年的基数 + List priceArrs = WxRentContractHelper.calcuteRentAndRevenuePrice(rentcontract); + String[] rentPriceArrs = priceArrs.get(0); + String[] revenuePriceArrs = priceArrs.get(1); + //计算商业管理费 + String[] bussinessManagerPriceArrs = WxRentContractHelper.calcuteBussinessManagementFee(rentcontract); + //计算运营管理费 + String[] operationManagerPriceArrs = WxRentContractHelper.calcuteOperatingManagementFee(rentcontract); + + //物业费单价 + String[] propertyContractArrs = null; + List yearList = this.getYearList(rentPriceArrs.length, 12, rentcontract.getRentalStartDate(),null); + int yearIndex = 0; + for( int i = 0 ; i < yearList.size() ; i ++) { + Date yearEndDate = yearList.get(i); + if (rentcontract.getYearsBegin().before(yearEndDate) || rentcontract.getYearsEnd().equals(yearEndDate)) { + yearIndex = i-1; + break; + } + } + if (yearIndex <= 0 ) { + yearIndex = 0; + } + StringBuffer sb = new StringBuffer(""); + return handleBills(sb,rentcontract,null,owe,null,rentcontract.getYearsBegin(),rentcontract.getYearsBegin(),EnumBillExtraCreateFrom.RNET_TIAODIAN_HUISUAN,null,rentPriceArrs,bussinessManagerPriceArrs,operationManagerPriceArrs,propertyContractArrs,yearIndex); + } + @Override public List findJumpList(WxRentContractRevenueJump jump) {