From 58608a17e5e336454531d74584dd63acf3c425b9 Mon Sep 17 00:00:00 2001 From: winter Date: Sun, 21 Apr 2024 16:02:09 +0800 Subject: [PATCH] fix --- .../rent/WxBillRentManageController.java | 8 +- .../iformall/domain/po/WxBillRentManage.java | 4 + .../mapper/WxBillRentManageMapper.java | 1 + .../service/WxBillRentManageService.java | 3 +- .../impl/WxBillRentManageServiceImpl.java | 168 +++++++++++++----- .../mapper/WxBillRentManageMapper.xml | 49 +++-- 6 files changed, 171 insertions(+), 62 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillRentManageController.java b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillRentManageController.java index a545fba4a..c3b6b6506 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillRentManageController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillRentManageController.java @@ -6,6 +6,7 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxBillRentManage; +import com.iformall.domain.po.WxUserDataRule; import com.iformall.domain.po.base.BaseEntity; import com.iformall.enums.EnumRentContractManageFeeType; import com.iformall.service.WxBillRentManageService; @@ -41,6 +42,11 @@ public class WxBillRentManageController extends BaseController { wxBillRentManage = new WxBillRentManage(); } wxBillRentManage.updateTenantInfo(getTenantInfo()); + WxUserDataRule dataRule = this.getCurrentDataFloors(); + if (null != dataRule) { + wxBillRentManage.setFloorForRule(dataRule.getFloorForRule()); + wxBillRentManage.setBusinessForRule(dataRule.getBusinessForRule()); + } wxBillRentManage.setSortColumns(BaseEntity.SortField.Createtime_DESC,BaseEntity.SortField.Id_DESC); final PageInfo page = wxBillRentManageService.listAsPage(wxBillRentManage, pageNum, pageSize); return new ResultData(page); @@ -50,7 +56,7 @@ public class WxBillRentManageController extends BaseController { @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData detail(Long id) { logger.debug("[" + getIpAddr() + "] WxBillRentController::detail"); - return new ResultData(Result.SUCCESS, "查询成功", wxBillRentManageService.getById(id)); + return new ResultData(Result.SUCCESS, "查询成功", wxBillRentManageService.getById(this.getTenantInfo(),id)); } @PostMapping("add") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java index ff7bd4dd2..b10b3aaff 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java @@ -11,6 +11,7 @@ import lombok.ToString; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * @author gongbiao @@ -208,5 +209,8 @@ public class WxBillRentManage extends TenantEntity { this.shopInfo = billRent.getShopInfo(); this.latePayRatio = billRent.getLatePayRatio(); } + + @TableField(exist = false) + private List merchantIds; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillRentManageMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillRentManageMapper.java index b5bfe2d8c..d5f555ac2 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillRentManageMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillRentManageMapper.java @@ -15,6 +15,7 @@ public interface WxBillRentManageMapper extends CommonMapper findList(WxBillRentManage wxBillRentManage); List queryBillManageList(WxBillRentManage wxBillRentManage); + List queryRentContractIds(WxBillRentManage wxBillRentManage); Map queryPayInfoTotal(Map params); diff --git a/mallinkService/src/main/java/com/iformall/service/WxBillRentManageService.java b/mallinkService/src/main/java/com/iformall/service/WxBillRentManageService.java index dde2d3dab..25c08d17a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxBillRentManageService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxBillRentManageService.java @@ -5,6 +5,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxBillRentManage; import com.iformall.domain.po.WxPayAccountBill; +import com.iformall.domain.po.base.TenantEntity; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -29,7 +30,7 @@ public interface WxBillRentManageService { * @param id * @return */ - WxBillRentManage getById(Long id); + WxBillRentManage getById(TenantEntity tenantEntity,Long id); PageInfo findByRentContractId(WxBillRentManage record, Integer pageIndex, Integer pageSize); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java index 6f15d9a76..7b7d31291 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java @@ -9,21 +9,31 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxBillAction; +import com.iformall.domain.po.WxBillDeposit; +import com.iformall.domain.po.WxBillRent; import com.iformall.domain.po.WxBillRentManage; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPayAccountBill; +import com.iformall.domain.po.WxRentContract; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxBillActionMapper; import com.iformall.mapper.WxBillRentManageMapper; +import com.iformall.mapper.WxRentContractMapper; import com.iformall.service.ExcelService; import com.iformall.service.WxBillActionService; import com.iformall.service.WxBillRentManageService; +import com.iformall.service.WxMerchantService; import com.iformall.service.WxPayAccountBillService; import com.iformall.utils.DateUtils; + +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -54,18 +64,91 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { @Autowired ExcelService excelService; + + @Lazy + @Autowired + WxMerchantService wxMerchantService; + + @Autowired + WxRentContractMapper wxRentContractMapper; @Override public PageInfo listAsPage(WxBillRentManage wxBillRentManage, Integer pageIndex, Integer pageSize) { WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(wxBillRentManage); - PageHelper.startPage(pageIndex, pageSize); - List billDepositList = wxBillRentManageMapper.queryBillManageList(wxBillRentManage); - billDepositList.stream().forEach(e->{ - //手续费 = 合同应收+手续费+滞纳金 - computeTotalMoney(wxPayAccountBill, e); - }); - PageInfo pageInfo = new PageInfo<>(billDepositList); - return pageInfo; + return getBillRentManageList(pageIndex, pageSize, wxBillRentManage, wxPayAccountBill); + } + + private PageInfo getBillRentManageList(Integer pageIndex, Integer pageSize,WxBillRentManage wxBillRentManage,WxPayAccountBill wxPayAccountBill) { + if (null != wxBillRentManage.getFloorForRule()) { + List merchantIds = wxMerchantService.getFloorBuildMerchantIds(wxBillRentManage, wxBillRentManage.getFloorForRule(), null, null, 0, 0); + if (null != merchantIds) { + wxBillRentManage.setMerchantIds(merchantIds); + }else { + wxBillRentManage.setId(-1L); + } + } + if (StringUtils.isNotBlank(wxBillRentManage.getMerchantName())) { + WxMerchant mq = new WxMerchant(); + mq.updateTenantInfo(wxBillRentManage); + mq.setName(StringUtils.trimToNull(wxBillRentManage.getMerchantName())); + List mids = wxMerchantService.findIdList(mq); + if (null != mids && mids.size() > 0 ) { + if (null != wxBillRentManage.getMerchantIds()) { + List _mids = (List) CollectionUtils.intersection(mids, wxBillRentManage.getMerchantIds()); + if (null == _mids || _mids.size() <= 0) { + wxBillRentManage.setId(-1L); + }else { + wxBillRentManage.setMerchantIds(_mids); + } + }else { + wxBillRentManage.setMerchantIds(mids); + } + }else { + wxBillRentManage.setId(-1L); + } + } + PageInfo billRentList = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxBillRentManageMapper.queryBillManageList(wxBillRentManage)); + if (null == billRentList) { + return null; + } + + List rentContractIdList = wxBillRentManageMapper.queryRentContractIds(wxBillRentManage); + Map rentContractMap = new HashMap(); + if ( null != rentContractIdList && rentContractIdList.size() > 0 ) { + WxRentContract rcq = new WxRentContract(); + rcq.updateTenantInfo(wxBillRentManage); + rcq.setIds(rentContractIdList); + List rlist = wxRentContractMapper.findList(rcq); + if (null != rlist && rlist.size() > 0 ) { + for (int i = 0 ; i < rlist.size(); i++) { + WxRentContract rc = rlist.get(i); + rentContractMap.put(rc.getId(), rc); + } + } + } + + if (null != billRentList.getList()) { + for (int i = 0 ; i < billRentList.getList().size() ; i ++) { + WxBillRentManage e = billRentList.getList().get(i); + //手续费 = 合同应收+手续费+滞纳金 + computeTotalMoney(wxPayAccountBill, e); + WxRentContract rent = rentContractMap.get(e.getRentContractId()); + if (null != rent) { + e.setMerchantName(rent.getMerchantName()); + //e.setRentType(rent.getType()); + //if (null != rent.getPayRatio()) { + // e.setPayRatio(rent.getPayRatio().longValue()); + //}else { + // e.setPayRatio(0l); + //} +// if (StringUtils.isNoneBlank(rent.getLatePayRatio())) { +// e.setLatePayRatio(Integer.parseInt(rent.getLatePayRatio())); +// } + //e.setLatePayDay(rent.getLatePayDay()); + } + } + } + return billRentList; } @Override @@ -161,13 +244,13 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { } @Override - public WxBillRentManage getById(Long id) { + public WxBillRentManage getById(TenantEntity tenantEntity,Long id) { + WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(tenantEntity); WxBillRentManage record = new WxBillRentManage(); record.setId(id); - WxBillRentManage rentManage = wxBillRentManageMapper.queryBillManageList(record).get(0); - WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(record); - //手续费 = 合同应收+手续费+滞纳金 - computeTotalMoney(wxPayAccountBill, rentManage); + record.updateTenantInfo(tenantEntity); + PageInfo page = getBillRentManageList(1, 1, record, wxPayAccountBill); + WxBillRentManage rentManage = page.getList().get(0); rentManage.setOwe(rentManage.getRealReceivePay() - rentManage.getPay()); return rentManage; } @@ -175,14 +258,7 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { @Override public PageInfo findByRentContractId(WxBillRentManage record, Integer pageIndex, Integer pageSize) { WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(record); - PageHelper.startPage(pageIndex, pageSize); - List billRentList = wxBillRentManageMapper.queryBillManageList(record); - billRentList.stream().forEach(e->{ - //手续费 = 合同应收+手续费+滞纳金 - computeTotalMoney(wxPayAccountBill, e); - }); - PageInfo pageInfo = new PageInfo<>(billRentList); - return pageInfo; + return getBillRentManageList(pageIndex, pageSize, record, wxPayAccountBill); } @Override @@ -313,33 +389,31 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(wxBillRentManage); String billName = wxBillRentManage.getRentShopType().equals(EnumRentShopType.SHOP.getCode()) ? "商铺租金账单" : "多经点位租金账单"; - List billRentList = wxBillRentManageMapper.queryBillManageList(wxBillRentManage); - billRentList.stream().forEach(e->{ - //手续费 = 合同应收+手续费+滞纳金 - computeTotalMoney(wxPayAccountBill, e); - }); - Map> collect = billRentList.parallelStream() - .collect(Collectors.groupingBy(WxBillRentManage::getMerchantId)); - Set>> entries = collect.entrySet(); + PageInfo billRentList = getBillRentManageList(1, 10000, wxBillRentManage, wxPayAccountBill); List datalist = new ArrayList<>(); - for (Map.Entry> entry : entries) { - List list = entry.getValue(); - for (WxBillRentManage rent : list) { - String shopNumber = rent.getShopNumber(); - if (StringUtils.isEmpty(shopNumber)) { - String shopInfo = rent.getShopInfo(); - if (StringUtils.isNotEmpty(shopInfo) && !shopInfo.equals("[]")) { - JSONObject jsonObject = JSONObject.parseObject(shopInfo); - StringBuffer sb = new StringBuffer(); - Set> sets = jsonObject.entrySet(); - sets.forEach(x -> sb.append(x.getKey()).append(",")); - if(StringUtils.isNotBlank(sb)){ - rent.setShopNumber(sb.deleteCharAt(sb.length() - 1).toString()); - } - } - } - datalist.add(rent); - } + if (null != billRentList && null != billRentList.getList()) { + Map> collect = billRentList.getList().parallelStream() + .collect(Collectors.groupingBy(WxBillRentManage::getMerchantId)); + Set>> entries = collect.entrySet(); + for (Map.Entry> entry : entries) { + List list = entry.getValue(); + for (WxBillRentManage rent : list) { + String shopNumber = rent.getShopNumber(); + if (StringUtils.isEmpty(shopNumber)) { + String shopInfo = rent.getShopInfo(); + if (StringUtils.isNotEmpty(shopInfo) && !shopInfo.equals("[]")) { + JSONObject jsonObject = JSONObject.parseObject(shopInfo); + StringBuffer sb = new StringBuffer(); + Set> sets = jsonObject.entrySet(); + sets.forEach(x -> sb.append(x.getKey()).append(",")); + if(StringUtils.isNotBlank(sb)){ + rent.setShopNumber(sb.deleteCharAt(sb.length() - 1).toString()); + } + } + } + datalist.add(rent); + } + } } excelService.exportExcel(datalist, null, billName, WxBillRentManage.class, billName + ".xlsx", response, false); diff --git a/mallinkService/src/main/resources/mapper/WxBillRentManageMapper.xml b/mallinkService/src/main/resources/mapper/WxBillRentManageMapper.xml index e843c5884..9a9a859dc 100644 --- a/mallinkService/src/main/resources/mapper/WxBillRentManageMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillRentManageMapper.xml @@ -76,6 +76,12 @@ and `pay_way` = #{payWay} and `late_pay_status` = #{latePayStatus} and `manage_fee_type` = #{manageFeeType} + + and merchant_id in + + #{midItem} + + and id in @@ -92,15 +98,8 @@ - + select br.`id`,br.`receive_pay`,br.`pay`,br.`receive_date`,br.`pay_date`,br.`createtime`,br.`expired_day`, + case when br.status=1 then br.owe else 0 end owe,br.`status`,br.`need_pay`,br.`late_pay_time`,br.`period`,br.`rent_contract_id`, + br.`updatetime`,br.`merchant_id`,br.`rent_shop_type`,br.`apply_status`,br.`apply_pay_img`,br.`apply_update_time`, + br.late_pay_price,br.shop_info,br.pay_way,br.late_pay_status,br.starttime,br.endtime, + br.freeze,br.service_charge_pay,br.manage_fee_type + + r.merchant_name,r.type as rent_type,r.`late_pay_ratio` + + + + from wx_bill_rent_manage br + left join wx_rent_contract r on br.rent_contract_id=r.id + + order by ${sortColumns} limit #{limitStart},#{limitEnd} + +