winter 2 лет назад
Родитель
Сommit
58608a17e5
6 измененных файлов: 171 добавлений и 62 удалений
  1. +7
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillRentManageController.java
  2. +4
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxBillRentManage.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxBillRentManageMapper.java
  4. +2
    -1
      mallinkService/src/main/java/com/iformall/service/WxBillRentManageService.java
  5. +121
    -47
      mallinkService/src/main/java/com/iformall/service/impl/WxBillRentManageServiceImpl.java
  6. +36
    -13
      mallinkService/src/main/resources/mapper/WxBillRentManageMapper.xml

+ 7
- 1
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<WxBillRentManage> 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")


+ 4
- 0
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<Long> merchantIds;

}

+ 1
- 0
mallinkService/src/main/java/com/iformall/mapper/WxBillRentManageMapper.java Просмотреть файл

@@ -15,6 +15,7 @@ public interface WxBillRentManageMapper extends CommonMapper<WxBillRentManage, L
List<WxBillRentManage> findList(WxBillRentManage wxBillRentManage);
List<WxBillRentManage> queryBillManageList(WxBillRentManage wxBillRentManage);
List<Long> queryRentContractIds(WxBillRentManage wxBillRentManage);
Map<String,Object> queryPayInfoTotal(Map<String,Object> params);


+ 2
- 1
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<WxBillRentManage> findByRentContractId(WxBillRentManage record, Integer pageIndex, Integer pageSize);


+ 121
- 47
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<WxBillRentManage> listAsPage(WxBillRentManage wxBillRentManage, Integer pageIndex, Integer pageSize) {
WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(wxBillRentManage);
PageHelper.startPage(pageIndex, pageSize);
List<WxBillRentManage> billDepositList = wxBillRentManageMapper.queryBillManageList(wxBillRentManage);
billDepositList.stream().forEach(e->{
//手续费 = 合同应收+手续费+滞纳金
computeTotalMoney(wxPayAccountBill, e);
});
PageInfo<WxBillRentManage> pageInfo = new PageInfo<>(billDepositList);
return pageInfo;
return getBillRentManageList(pageIndex, pageSize, wxBillRentManage, wxPayAccountBill);
}
private PageInfo<WxBillRentManage> getBillRentManageList(Integer pageIndex, Integer pageSize,WxBillRentManage wxBillRentManage,WxPayAccountBill wxPayAccountBill) {
if (null != wxBillRentManage.getFloorForRule()) {
List<Long> 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<Long> mids = wxMerchantService.findIdList(mq);
if (null != mids && mids.size() > 0 ) {
if (null != wxBillRentManage.getMerchantIds()) {
List<Long> _mids = (List<Long>) 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<WxBillRentManage> billRentList = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxBillRentManageMapper.queryBillManageList(wxBillRentManage));
if (null == billRentList) {
return null;
}
List<Long> rentContractIdList = wxBillRentManageMapper.queryRentContractIds(wxBillRentManage);
Map<Long,WxRentContract> rentContractMap = new HashMap<Long,WxRentContract>();
if ( null != rentContractIdList && rentContractIdList.size() > 0 ) {
WxRentContract rcq = new WxRentContract();
rcq.updateTenantInfo(wxBillRentManage);
rcq.setIds(rentContractIdList);
List<WxRentContract> 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<WxBillRentManage> 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<WxBillRentManage> findByRentContractId(WxBillRentManage record, Integer pageIndex, Integer pageSize) {
WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(record);
PageHelper.startPage(pageIndex, pageSize);
List<WxBillRentManage> billRentList = wxBillRentManageMapper.queryBillManageList(record);
billRentList.stream().forEach(e->{
//手续费 = 合同应收+手续费+滞纳金
computeTotalMoney(wxPayAccountBill, e);
});
PageInfo<WxBillRentManage> 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<WxBillRentManage> billRentList = wxBillRentManageMapper.queryBillManageList(wxBillRentManage);
billRentList.stream().forEach(e->{
//手续费 = 合同应收+手续费+滞纳金
computeTotalMoney(wxPayAccountBill, e);
});
Map<Long, List<WxBillRentManage>> collect = billRentList.parallelStream()
.collect(Collectors.groupingBy(WxBillRentManage::getMerchantId));
Set<Map.Entry<Long, List<WxBillRentManage>>> entries = collect.entrySet();
PageInfo<WxBillRentManage> billRentList = getBillRentManageList(1, 10000, wxBillRentManage, wxPayAccountBill);
List<WxBillRentManage> datalist = new ArrayList<>();
for (Map.Entry<Long, List<WxBillRentManage>> entry : entries) {
List<WxBillRentManage> 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<Map.Entry<String, Object>> 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<Long, List<WxBillRentManage>> collect = billRentList.getList().parallelStream()
.collect(Collectors.groupingBy(WxBillRentManage::getMerchantId));
Set<Map.Entry<Long, List<WxBillRentManage>>> entries = collect.entrySet();
for (Map.Entry<Long, List<WxBillRentManage>> entry : entries) {
List<WxBillRentManage> 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<Map.Entry<String, Object>> 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);


+ 36
- 13
mallinkService/src/main/resources/mapper/WxBillRentManageMapper.xml Просмотреть файл

@@ -76,6 +76,12 @@
<if test=" null != payWay ">and `pay_way` = #{payWay}</if>
<if test=" null != latePayStatus ">and `late_pay_status` = #{latePayStatus}</if>
<if test=" null != manageFeeType ">and `manage_fee_type` = #{manageFeeType}</if>
<if test=" null != merchantIds ">
and merchant_id in
<foreach collection="merchantIds" index="index" item="midItem" open="(" separator="," close=")">
#{midItem}
</foreach>
</if>
<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
@@ -92,15 +98,8 @@
<include refid="dynamicWhereConditions"/>
</select>

<select id="queryBillManageList" parameterType="com.iformall.domain.po.WxBillRentManage" resultMap="BaseResultMap">
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`,
r.merchant_name,br.`updatetime`,br.`merchant_id`,br.`rent_shop_type`,r.type as rent_type,br.`apply_status`,br.`apply_pay_img`,br.`apply_update_time`,
r.`late_pay_ratio`,br.`late_pay_time`,br.`period`,br.`rent_contract_id`,
br.late_pay_price,br.shop_info,br.pay_way,br.late_pay_status,br.starttime,br.endtime,
r.late_pay_ratio,br.freeze,br.service_charge_pay,br.manage_fee_type
from wx_bill_rent_manage br
left join wx_rent_contract r on br.rent_contract_id=r.id

<sql id="queryBillManageListConditions">
<where>
1 = 1
<if test=" null != freeze ">and br.`freeze` = #{freeze}</if>
@@ -109,9 +108,6 @@
<if test=" null != applyStatus ">and br.`apply_status` = #{applyStatus}</if>
<if test=" null != id ">and br.`id` = #{id}</if>
<if test=" null != merchantId ">and br.`merchant_id` = #{merchantId}</if>
<if test=" null != merchantName and ''!=merchantName ">and r.merchant_name like
concat('%',#{merchantName},'%')
</if>
<if test=" null != isDel ">and br.`is_del` = #{isDel}</if>
<if test=" null != rentContractId ">and br.`rent_contract_id` = #{rentContractId}</if>
<if test=" null != payWay ">and br.`pay_way` = #{payWay}</if>
@@ -119,13 +115,40 @@
<if test=" null != starttime and null!=endtime ">and br.`receive_date` between #{starttime} and #{endtime}
</if>
<if test=" null != manageFeeType ">and br.`manage_fee_type` = #{manageFeeType}</if>
<if test=" null != merchantIds ">
and br.merchant_id in
<foreach collection="merchantIds" index="index" item="midItem" open="(" separator="," close=")">
#{midItem}
</foreach>
</if>
</where>
<if test=" null != sortColumns">order by ${sortColumns}</if>
</sql>

<select id="queryBillManageList" parameterType="com.iformall.domain.po.WxBillRentManage" resultMap="BaseResultMap">
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
<include refid="queryBillManageListConditions"/>
<if test=" null != sortColumns">order by ${sortColumns}</if>
<if test="null != limitStart and null != limitEnd">
limit #{limitStart},#{limitEnd}
</if>
</select>
<select id="queryRentContractIds" parameterType="com.iformall.domain.po.WxBillRentManage" resultType="Long">
select distinct br.`rent_contract_id` from wx_bill_rent_manage br
<include refid="queryBillManageListConditions"/>
</select>

<select id="queryPayInfoTotal" resultType="hashmap" parameterType="hashmap">
select IFNULL(sum(receive_pay),0) receivepay,IFNULL(sum(pay),0) pay,tenant_id from wx_bill_rent_manage


Загрузка…
Отмена
Сохранить