Просмотр исходного кода

[账单导入][修改][日常、其他及其他押金账单导入逻辑]

release_toaliyun_real
gongbiao 6 лет назад
Родитель
Сommit
1b89b4f501
7 измененных файлов: 318 добавлений и 137 удалений
  1. +100
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/mem/ImportTemplateTask.java
  2. +6
    -3
      mallinkAdmin/src/main/java/com/iformall/controller/template/WxImportTemplateController.java
  3. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxBillExcelTemplate.java
  4. +0
    -17
      mallinkService/src/main/java/com/iformall/domain/vo/WxBillExcelTemplateDaily.java
  5. +23
    -1
      mallinkService/src/main/java/com/iformall/domain/vo/WxBillExcelTemplateOther.java
  6. +4
    -1
      mallinkService/src/main/java/com/iformall/service/WxBillAllService.java
  7. +182
    -111
      mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java

+ 100
- 4
mallinkAdmin/src/main/java/com/iformall/controller/mem/ImportTemplateTask.java Просмотреть файл

@@ -9,6 +9,7 @@ import com.iformall.domain.po.MallUserInfo;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxTags;
import com.iformall.domain.vo.CUserBaseInfoT;
import com.iformall.domain.vo.WxBillExcelTemplate;
import com.iformall.domain.vo.WxBillExcelTemplateOther;
import com.iformall.enums.EnumMerchantStatus;
import com.iformall.mapper.WxMerchantMapper;
@@ -57,8 +58,102 @@ public class ImportTemplateTask {
ImportParams params = new ImportParams();
// 需要验证
params.setImportFields(new String[]{"商户名*", "费用类型*", "费用属性*", "费用所属期-开始时间*", "费用所属期-结束时间*", "收款金额(元)*", "收款日期*", "截止缴款日*", "收款方式"});
IExcelDataHandler<CUserBaseInfoT> handler = new ImportTemplateTask.UserExcelHandler();
handler.setNeedHandlerFields(new String[]{"商户名*", "费用类型*", "费用属性*", "费用所属期-开始时间*", "费用所属期-结束时间*", "收款金额(元)*", "收款日期*", "截止缴款日*"});
params.setNeedVerify(true);

ExcelImportResult<WxBillExcelTemplate> datalist = null;

try {
datalist = ExcelImportUtil.importExcelMore(file, WxBillExcelTemplate.class, params);
} catch (Exception e) {
set_redis_value(importKey, "1", "0", "0", "1", true);
logger.error(e.getMessage());
// 删除缓存文件
file.delete();
return;
}
// 删除缓存文件
file.delete();

if (datalist == null) {
logger.error("导入模板失败: 模板数据解析失败");
set_redis_value(importKey, "1", "0", "0", "1", true);
return;
}

List<WxBillExcelTemplate> successList = datalist.getList();
List<WxBillExcelTemplate> failList = datalist.getFailList();

//此处判断商户是否存在
//1 过滤重复商户名
Set<String> merchantSet = successList.parallelStream().filter(s -> StringUtils.isNotEmpty(s.getMerchantName()))
.map(s -> StringUtils.trim(s.getMerchantName()))
.collect(Collectors.toSet());
//2 查询商户名是否存在
Map<String, WxMerchant> merchantMap = new HashMap<>();
merchantSet.parallelStream().forEach(merchantName -> {
WxMerchant wxMerchantQuery = new WxMerchant();
wxMerchantQuery.setTenantId(tenantId);
wxMerchantQuery.setName(merchantName);
wxMerchantQuery.setStatus(EnumMerchantStatus.VALID.getCode());
WxMerchant wxMerchant = wxMerchantMapper.selectOne(wxMerchantQuery);
if (wxMerchant != null) {
merchantMap.put(merchantName, wxMerchant);
}
});
//3 计失败条数
List<WxBillExcelTemplate> billSuccessList = new ArrayList<>();
successList.parallelStream().forEach(s -> {
if (StringUtils.isNotEmpty(s.getMerchantName()) && null != s.getBillType()
&& StringUtils.isNotEmpty(s.getBillAttr()) && null != s.getStarttime()
&& null != s.getEndtime() && StringUtils.isNotEmpty(s.getPayStr())
&& null != s.getPayDate() && null != s.getReceiveDate()) {
WxMerchant wxMerchant = merchantMap.get(s.getMerchantName());
if (wxMerchant != null) {
Long merchantId = wxMerchant.getId();
if (merchantId != null) {
s.setMerchantId(merchantId);
Integer type = wxMerchant.getType();
s.setMerchantType(type);
billSuccessList.add(s);
}
}
}
});
int billSuccessSize = billSuccessList.size();
int successSize = successList.size();
int failSize = failList.size();
int total = successSize + failSize;
int failCount = successSize - billSuccessSize;
int all_success = billSuccessSize;
int all_fail = failSize + failCount;

logger.info("验证通过的数量: " + billSuccessSize);
logger.info("验证未通过的数量: " + failSize);

//添加到redis里
set_redis_value(importKey, "" + total, "" + all_success, "0", "" + all_fail, total == all_fail);

if (billSuccessSize > 0) {
try {
billSuccessList.stream().forEach(bill -> {
try {
wxBillAllService.importBill(tenantId, importKey, bill, user);
} catch (UnknownSessionException ue) {
logger.error("session :" + ue.getMessage());
}
});
} catch (Exception e) {
set_redis_value(importKey, "1", "0", "0", "1", true);
e.printStackTrace();
logger.error("导入模板失败:" + e.getMessage());
}
}
}

public void importBillDataOther(File file, MallUserInfo user, String importKey, String tenantId) {
ImportParams params = new ImportParams();
// 需要验证
params.setImportFields(new String[]{"商户名*", "费用类型*", "费用属性*", "费用所属期-开始时间*", "费用所属期-结束时间*", "实际应收金额(元)*", "收款金额(元)*", "收款日期*", "截止缴款日*", "收款方式"});
params.setNeedVerify(true);

ExcelImportResult<WxBillExcelTemplateOther> datalist = null;
@@ -107,7 +202,8 @@ public class ImportTemplateTask {
if (StringUtils.isNotEmpty(s.getMerchantName()) && null != s.getBillType()
&& StringUtils.isNotEmpty(s.getBillAttr()) && null != s.getStarttime()
&& null != s.getEndtime() && StringUtils.isNotEmpty(s.getPayStr())
&& null != s.getPayDate() && null != s.getReceiveDate()) {
&& null != s.getPayDate() && null != s.getReceiveDate()
&& StringUtils.isNotEmpty(s.getReceivePayStr()) && Long.parseLong(s.getPayStr()) > 0L) {
WxMerchant wxMerchant = merchantMap.get(s.getMerchantName());
if (wxMerchant != null) {
Long merchantId = wxMerchant.getId();
@@ -138,7 +234,7 @@ public class ImportTemplateTask {
try {
billSuccessList.stream().forEach(bill -> {
try {
wxBillAllService.importBill(tenantId, importKey, bill, user);
wxBillAllService.importBillOther(tenantId, importKey, bill, user);
} catch (UnknownSessionException ue) {
logger.error("session :" + ue.getMessage());
}


+ 6
- 3
mallinkAdmin/src/main/java/com/iformall/controller/template/WxImportTemplateController.java Просмотреть файл

@@ -136,10 +136,13 @@ public class WxImportTemplateController extends BaseController {
}
if (type.equals(EnumImportType.MEMBER.getCode())) {
importTemplateTask.importMemberData(lFile, user, importKey, tenantId);
} else if (type.equals(EnumImportType.SHOP_RENT.getCode()) || type.equals(EnumImportType.POINT_RENT.getCode())
|| type.equals(EnumImportType.SHOP_PROPERTY.getCode()) || type.equals(EnumImportType.POINT_PROPERTY.getCode())) {
importTemplateTask.importBillData(lFile, user, importKey, tenantId);
} else if (type.equals(EnumImportType.DAILY.getCode()) || type.equals(EnumImportType.OTHER.getCode())
|| type.equals(EnumImportType.OTHER_DEPOSIT.getCode())) {
importTemplateTask.importBillDataOther(lFile, user, importKey, tenantId);
}
//暂时不区分账单类型,导入时区分
importTemplateTask.importBillData(lFile, user, importKey, tenantId);

return new ResultData(Result.SUCCESS, "模板正在导入");
}



+ 3
- 0
mallinkService/src/main/java/com/iformall/domain/vo/WxBillExcelTemplate.java Просмотреть файл

@@ -17,6 +17,9 @@ public class WxBillExcelTemplate {
@Excel(name = "费用类型*", width = 20, orderNum = "2", replace = {"商铺租金_1", "多经点位租金_2", "商铺物业费_3", "多经点位物业费_4", "日常费用_5", "其他费用_6", "其他押金_7"})
private Integer billType;

@Excel(name = "费用属性*", width = 20, orderNum = "3")
private String billAttr;

@Excel(name = "费用所属期-开始时间*", width = 20, orderNum = "4", format = "yyyy-MM-dd")
private Date starttime;



+ 0
- 17
mallinkService/src/main/java/com/iformall/domain/vo/WxBillExcelTemplateDaily.java Просмотреть файл

@@ -1,17 +0,0 @@
package com.iformall.domain.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
* @author gongbiao
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WxBillExcelTemplateDaily extends WxBillExcelTemplate {

@Excel(name = "费用属性*", width = 20, orderNum = "3", replace = {"租金_1", "物业费_2", "水费_3", "电费_4", "空调费_5", "其他费用_6", "其他押金_7"})
private Integer billAttr;

}

+ 23
- 1
mallinkService/src/main/java/com/iformall/domain/vo/WxBillExcelTemplateOther.java Просмотреть файл

@@ -4,6 +4,8 @@ import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
* @author gongbiao
*/
@@ -11,7 +13,27 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
public class WxBillExcelTemplateOther extends WxBillExcelTemplate {

@Excel(name = "费用属性*", width = 20, orderNum = "3")
@Excel(name = "费用名称*", width = 20, orderNum = "3")
private String billAttr;

@Excel(name = "费用所属期-开始时间*", width = 20, orderNum = "4", format = "yyyy-MM-dd")
private Date starttime;

@Excel(name = "费用所属期-结束时间*", width = 20, orderNum = "5", format = "yyyy-MM-dd")
private Date endtime;
@Excel(name = "实际应收金额(元)*", width = 20, orderNum = "6")
private String receivePayStr;

@Excel(name = "收款金额(元)*", width = 20, orderNum = "7")
private String payStr;

@Excel(name = "收款日期*", width = 20, orderNum = "8", format = "yyyy-MM-dd")
private Date payDate;

@Excel(name = "截止缴款日*", width = 20, orderNum = "9", format = "yyyy-MM-dd")
private Date receiveDate;

@Excel(name = "收款方式", width = 20, orderNum = "10")
private String payWay;

}

+ 4
- 1
mallinkService/src/main/java/com/iformall/service/WxBillAllService.java Просмотреть файл

@@ -62,5 +62,8 @@ public interface WxBillAllService {

void exportTemplate(WxBillExcelTemplate wxBillExcelTemplate, HttpServletRequest request, HttpServletResponse response);

void importBill(String tenantId, String importKey, WxBillExcelTemplateOther bill, MallUserInfo user);
void importBill(String tenantId, String importKey, WxBillExcelTemplate bill, MallUserInfo user);

void importBillOther(String tenantId, String importKey, WxBillExcelTemplateOther bill, MallUserInfo user);

}

+ 182
- 111
mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java Просмотреть файл

@@ -907,7 +907,9 @@ public class WxBillAllServiceImpl implements WxBillAllService {

@Override
public void exportTemplate(WxBillExcelTemplate WxBillExcelTemplate, HttpServletRequest request, HttpServletResponse response) {
List<WxBillExcelTemplateOther> datalist = new ArrayList<>();
List<WxBillExcelTemplate> datalist = new ArrayList<>();
List<WxBillExcelTemplateOther> otherDatalist = new ArrayList<>();

Integer billType = WxBillExcelTemplate.getBillType();
if (billType.equals(EnumBillExcelTemplate.DAILY.getCode())) {
WxBillExcelTemplateOther one = new WxBillExcelTemplateOther();
@@ -917,11 +919,12 @@ public class WxBillAllServiceImpl implements WxBillAllService {
one.setBillAttr("水费");
one.setStarttime(date);
one.setEndtime(date);
one.setReceivePayStr("1000");
one.setPayStr("1000");
one.setPayDate(date);
one.setReceiveDate(date);
one.setPayWay("微信");
datalist.add(one);
otherDatalist.add(one);

WxBillExcelTemplateOther two = new WxBillExcelTemplateOther();
two.setMerchantName("商户2");
@@ -929,11 +932,12 @@ public class WxBillAllServiceImpl implements WxBillAllService {
two.setBillAttr("电费");
two.setStarttime(date);
two.setEndtime(date);
two.setReceivePayStr("2000.50");
two.setPayStr("2000.50");
two.setPayDate(date);
two.setReceiveDate(date);
two.setPayWay("支付宝");
datalist.add(two);
otherDatalist.add(two);

WxBillExcelTemplateOther three = new WxBillExcelTemplateOther();
three.setMerchantName("商户3");
@@ -941,107 +945,80 @@ public class WxBillAllServiceImpl implements WxBillAllService {
three.setBillAttr("空调费");
three.setStarttime(date);
three.setEndtime(date);
three.setReceivePayStr("3333");
three.setPayStr("3333");
three.setPayDate(date);
three.setReceiveDate(date);
three.setPayWay("其他");
datalist.add(three);
otherDatalist.add(three);
excelService.exportExcel(otherDatalist, null, "账单模板", WxBillExcelTemplateOther.class, "账单模板.xlsx", response, true);
} else if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_RENT.getCode())) {
WxBillExcelTemplate one = new WxBillExcelTemplate();
Date date = new Date();
one.setMerchantName("商户");
one.setBillType(billType);
one.setBillAttr("租金");
one.setStarttime(date);
one.setEndtime(date);
one.setPayStr("2000.50");
one.setReceiveDate(date);
one.setPayDate(date);
one.setPayWay("微信");
datalist.add(one);
excelService.exportExcel(datalist, null, "账单模板", WxBillExcelTemplate.class, "账单模板.xlsx", response, true);
} else if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_PROPERTY.getCode())) {
WxBillExcelTemplate one = new WxBillExcelTemplate();
Date date = new Date();
one.setMerchantName("商户");
one.setBillType(billType);
one.setBillAttr("物业费");
one.setStarttime(date);
one.setEndtime(date);
one.setPayStr("2000.50");
one.setReceiveDate(date);
one.setPayDate(date);
one.setPayWay("微信");
datalist.add(one);
excelService.exportExcel(datalist, null, "账单模板", WxBillExcelTemplate.class, "账单模板.xlsx", response, true);
} else if (billType.equals(EnumBillExcelTemplate.OTHER.getCode())) {
WxBillExcelTemplateOther one = new WxBillExcelTemplateOther();
Date date = new Date();
one.setMerchantName("商户");
one.setBillType(billType);
one.setBillAttr("其他费用");
one.setStarttime(date);
one.setEndtime(date);
one.setReceivePayStr("2000.50");
one.setPayStr("2000.50");
one.setReceiveDate(date);
one.setPayDate(date);
one.setPayWay("微信");
otherDatalist.add(one);
excelService.exportExcel(otherDatalist, null, "账单模板", WxBillExcelTemplateOther.class, "账单模板.xlsx", response, true);
} else {

WxBillExcelTemplateOther one = new WxBillExcelTemplateOther();
Date date = new Date();
one.setMerchantName("商户");
one.setBillType(billType);
if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_RENT.getCode())) {
one.setBillAttr("租金");
} else if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_PROPERTY.getCode())) {
one.setBillAttr("物业费");
} else if (billType.equals(EnumBillExcelTemplate.OTHER.getCode())) {
one.setBillAttr("其他费用");
} else {
one.setBillAttr("其他押金");
}
one.setBillAttr("其他押金");
one.setStarttime(date);
one.setEndtime(date);
one.setReceivePayStr("2000.50");
one.setPayStr("2000.50");
one.setReceiveDate(date);
one.setPayDate(date);
one.setPayWay("微信");
datalist.add(one);
otherDatalist.add(one);
excelService.exportExcel(otherDatalist, null, "账单模板", WxBillExcelTemplateOther.class, "账单模板.xlsx", response, true);
}
excelService.exportExcel(datalist, null, "账单模板", WxBillExcelTemplateOther.class, "账单模板.xlsx", response, true);

}

@Override
public void importBill(String tenantId, String importKey, WxBillExcelTemplateOther bill, MallUserInfo user) {
//租金
public void importBillOther(String tenantId, String importKey, WxBillExcelTemplateOther bill, MallUserInfo user) {
Integer billType = bill.getBillType();
if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_RENT.getCode())) {
WxBillRent rentQuery = new WxBillRent();
rentQuery.setTenantId(tenantId);
rentQuery.setMerchantId(bill.getMerchantId());
rentQuery.setStarttime(bill.getStarttime());
rentQuery.setEndtime(bill.getEndtime());
if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode())) {
rentQuery.setRentShopType(EnumRentShopType.SHOP.getCode());
} else {
rentQuery.setRentShopType(EnumRentShopType.POINT.getCode());
}
rentQuery.setIsPreview(EnumIsPreview.NO.getCode());
WxBillRent rent = wxBillRentMapper.selectBillOne(rentQuery);
if (rent != null && !rent.getStatus().equals(EnumBillRentStatus.PAID.getCode())) {
long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact();
if (rent.getOwe() <= pay) {
rent.setStatus(EnumBillRentStatus.PAID.getCode());
Date payDate = bill.getPayDate();
Date receiveDate = bill.getReceiveDate();
rent.setExpiredDay(0L);
if (payDate.after(receiveDate)) {
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
rent.setExpiredDay((long) expiredDay);
}
}
rent.setPay(rent.getPay() + pay);
rent.setOwe(rent.getOwe() - pay);
rent.setPayDate(bill.getPayDate());
rent.setReceiveDate(bill.getReceiveDate());
wxBillRentMapper.updateByPrimaryKey(rent);
addActionImport(rent.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr());
}
} else if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_PROPERTY.getCode())) {
WxBillProperty propertyQuery = new WxBillProperty();
propertyQuery.setTenantId(tenantId);
propertyQuery.setMerchantId(bill.getMerchantId());
propertyQuery.setStarttime(bill.getStarttime());
propertyQuery.setEndtime(bill.getEndtime());
if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode())) {
propertyQuery.setRentShopType(EnumRentShopType.SHOP.getCode());
} else {
propertyQuery.setRentShopType(EnumRentShopType.POINT.getCode());
}
propertyQuery.setIsPreview(EnumIsPreview.NO.getCode());
WxBillProperty property = wxBillPropertyMapper.selectBillOne(propertyQuery);
if (property != null && !property.getStatus().equals(EnumBillRentStatus.PAID.getCode())) {
long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact();
if (property.getOwe() <= pay) {
property.setStatus(EnumBillRentStatus.PAID.getCode());
Date payDate = bill.getPayDate();
Date receiveDate = bill.getReceiveDate();
property.setExpiredDay(0L);
if (payDate.after(receiveDate)) {
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
property.setExpiredDay((long) expiredDay);
}
}
property.setPay(property.getPay() + pay);
property.setOwe(property.getOwe() - pay);
property.setPayDate(bill.getPayDate());
property.setReceiveDate(bill.getReceiveDate());
wxBillPropertyMapper.updateByPrimaryKey(property);
addActionImport(property.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr());
}
} else if (billType.equals(EnumBillExcelTemplate.DAILY.getCode())) {
long receivePay = new BigDecimal(bill.getReceivePayStr()).multiply(new BigDecimal(100)).longValueExact();
long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact();
if (billType.equals(EnumBillExcelTemplate.DAILY.getCode())) {
WxBillDaily dailyQuery = new WxBillDaily();
String billAttrStr = StringUtils.trim(bill.getBillAttr());
if (billAttrStr.equals(EnumBillExcelTemplateDaily.WATER.getMessage())) {
@@ -1058,10 +1035,10 @@ public class WxBillAllServiceImpl implements WxBillAllService {
dailyQuery.setReceiveDate(bill.getReceiveDate());
dailyQuery.setIsDel(EnumDelStatus.NOT_DEL.getCode());
WxBillDaily daily = wxBillDailyMapper.selectOne(dailyQuery);
long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact();
if (daily != null) {
if (!daily.getStatus().equals(EnumBillRentStatus.PAID.getCode())) {
if (daily.getOwe() <= pay) {
long allPay = new BigDecimal(daily.getPay()).add(new BigDecimal(pay)).longValueExact();
if (allPay >= receivePay) {
daily.setStatus(EnumBillRentStatus.PAID.getCode());
Date payDate = bill.getPayDate();
Date receiveDate = bill.getReceiveDate();
@@ -1088,8 +1065,7 @@ public class WxBillAllServiceImpl implements WxBillAllService {
daily = new WxBillDaily();
final IdWorker idWorker = IdWorker.get();
daily.setId(idWorker.nextId());
daily.setStatus(EnumBillRentStatus.PAID.getCode());
daily.setReceivePay(pay);
daily.setReceivePay(receivePay);
daily.setReceiveDate(bill.getReceiveDate());
daily.setPay(pay);
daily.setType(dailyQuery.getType());
@@ -1106,11 +1082,18 @@ public class WxBillAllServiceImpl implements WxBillAllService {
daily.setIsDel(EnumDelStatus.NOT_DEL.getCode());
daily.setStarttime(bill.getStarttime());
daily.setEndtime(bill.getEndtime());
Date payDate = daily.getPayDate();
Date receiveDate = daily.getReceiveDate();
if (payDate.after(receiveDate)) {
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
daily.setExpiredDay((long) expiredDay);
if (receivePay <= pay) {
daily.setStatus(EnumBillRentStatus.PAID.getCode());
} else {
Date payDate = daily.getPayDate();
Date receiveDate = daily.getReceiveDate();
if (payDate.before(receiveDate)) {
daily.setStatus(EnumBillRentStatus.WAIT_PAY.getCode());
} else {
daily.setStatus(EnumBillRentStatus.NOT_PAID.getCode());
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
daily.setExpiredDay((long) expiredDay);
}
}
wxBillDailyMapper.insertSelective(daily);
addActionImport(daily.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr());
@@ -1124,10 +1107,10 @@ public class WxBillAllServiceImpl implements WxBillAllService {
otherQuery.setName(bill.getBillAttr());
otherQuery.setIsDel(EnumDelStatus.NOT_DEL.getCode());
WxBillOther other = wxBillOtherMapper.selectOne(otherQuery);
long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact();
if (other != null) {
if (!other.getStatus().equals(EnumBillRentStatus.PAID.getCode())) {
if (other.getOwe() <= pay) {
long allPay = new BigDecimal(other.getPay()).add(new BigDecimal(pay)).longValueExact();
if (allPay >= receivePay) {
other.setStatus(EnumBillRentStatus.PAID.getCode());
Date payDate = bill.getPayDate();
Date receiveDate = bill.getReceiveDate();
@@ -1158,8 +1141,7 @@ public class WxBillAllServiceImpl implements WxBillAllService {
other.setId(idWorker.nextId());
other.setName(bill.getBillAttr());
other.setComments(bill.getBillAttr());
other.setStatus(EnumBillRentStatus.PAID.getCode());
other.setReceivePay(pay);
other.setReceivePay(receivePay);
other.setReceiveDate(bill.getReceiveDate());
other.setPay(pay);
other.setTenantId(tenantId);
@@ -1175,11 +1157,18 @@ public class WxBillAllServiceImpl implements WxBillAllService {
other.setIsDel(EnumDelStatus.NOT_DEL.getCode());
other.setStarttime(bill.getStarttime());
other.setEndtime(bill.getEndtime());
Date payDate = other.getPayDate();
Date receiveDate = other.getReceiveDate();
if (payDate.after(receiveDate)) {
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
other.setExpiredDay((long) expiredDay);
if (receivePay <= pay) {
other.setStatus(EnumBillRentStatus.PAID.getCode());
} else {
Date payDate = other.getPayDate();
Date receiveDate = other.getReceiveDate();
if (payDate.before(receiveDate)) {
other.setStatus(EnumBillRentStatus.WAIT_PAY.getCode());
} else {
other.setStatus(EnumBillRentStatus.NOT_PAID.getCode());
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
other.setExpiredDay((long) expiredDay);
}
}
wxBillOtherMapper.insertSelective(other);
addActionImport(other.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr());
@@ -1193,10 +1182,10 @@ public class WxBillAllServiceImpl implements WxBillAllService {
otherDepositQuery.setComments(bill.getBillAttr());
otherDepositQuery.setIsDel(EnumDelStatus.NOT_DEL.getCode());
WxBillOtherDeposit otherDeposit = wxBillOtherDepositMapper.selectOne(otherDepositQuery);
long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact();
if (otherDeposit != null) {
if (!otherDeposit.getStatus().equals(EnumBillRentStatus.PAID.getCode())) {
if (otherDeposit.getOwe() <= pay) {
long allPay = new BigDecimal(otherDeposit.getPay()).add(new BigDecimal(pay)).longValueExact();
if (allPay >= receivePay) {
otherDeposit.setStatus(EnumBillRentStatus.PAID.getCode());
Date payDate = bill.getPayDate();
Date receiveDate = bill.getReceiveDate();
@@ -1226,8 +1215,7 @@ public class WxBillAllServiceImpl implements WxBillAllService {
otherDeposit.setId(idWorker.nextId());
otherDeposit.setName(bill.getBillAttr());
otherDeposit.setComments(bill.getBillAttr());
otherDeposit.setStatus(EnumBillRentStatus.PAID.getCode());
otherDeposit.setReceivePay(pay);
otherDeposit.setReceivePay(receivePay);
otherDeposit.setReceiveDate(bill.getReceiveDate());
otherDeposit.setPay(pay);
otherDeposit.setTenantId(tenantId);
@@ -1243,11 +1231,18 @@ public class WxBillAllServiceImpl implements WxBillAllService {
otherDeposit.setIsDel(EnumDelStatus.NOT_DEL.getCode());
otherDeposit.setStarttime(bill.getStarttime());
otherDeposit.setEndtime(bill.getEndtime());
Date payDate = otherDeposit.getPayDate();
Date receiveDate = otherDeposit.getReceiveDate();
if (payDate.after(receiveDate)) {
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
otherDeposit.setExpiredDay((long) expiredDay);
if (receivePay <= pay) {
otherDeposit.setStatus(EnumBillRentStatus.PAID.getCode());
} else {
Date payDate = otherDeposit.getPayDate();
Date receiveDate = otherDeposit.getReceiveDate();
if (payDate.before(receiveDate)) {
otherDeposit.setStatus(EnumBillRentStatus.WAIT_PAY.getCode());
} else {
otherDeposit.setStatus(EnumBillRentStatus.NOT_PAID.getCode());
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
otherDeposit.setExpiredDay((long) expiredDay);
}
}
wxBillOtherDepositMapper.insertSelective(otherDeposit);
addActionImport(otherDeposit.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr());
@@ -1261,6 +1256,82 @@ public class WxBillAllServiceImpl implements WxBillAllService {
stringRedisTemplate.expire(importKey, 10, TimeUnit.SECONDS);
}

@Override
public void importBill(String tenantId, String importKey, WxBillExcelTemplate bill, MallUserInfo user) {
//租金
Integer billType = bill.getBillType();
if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_RENT.getCode())) {
WxBillRent rentQuery = new WxBillRent();
rentQuery.setTenantId(tenantId);
rentQuery.setMerchantId(bill.getMerchantId());
rentQuery.setStarttime(bill.getStarttime());
rentQuery.setEndtime(bill.getEndtime());
if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode())) {
rentQuery.setRentShopType(EnumRentShopType.SHOP.getCode());
} else {
rentQuery.setRentShopType(EnumRentShopType.POINT.getCode());
}
rentQuery.setIsPreview(EnumIsPreview.NO.getCode());
WxBillRent rent = wxBillRentMapper.selectBillOne(rentQuery);
if (rent != null && !rent.getStatus().equals(EnumBillRentStatus.PAID.getCode())) {
long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact();
if (rent.getOwe() <= pay) {
rent.setStatus(EnumBillRentStatus.PAID.getCode());
Date payDate = bill.getPayDate();
Date receiveDate = bill.getReceiveDate();
rent.setExpiredDay(0L);
if (payDate.after(receiveDate)) {
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
rent.setExpiredDay((long) expiredDay);
}
}
rent.setPay(rent.getPay() + pay);
rent.setOwe(rent.getOwe() - pay);
rent.setPayDate(bill.getPayDate());
rent.setReceiveDate(bill.getReceiveDate());
wxBillRentMapper.updateByPrimaryKey(rent);
addActionImport(rent.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr());
}
} else if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_PROPERTY.getCode())) {
WxBillProperty propertyQuery = new WxBillProperty();
propertyQuery.setTenantId(tenantId);
propertyQuery.setMerchantId(bill.getMerchantId());
propertyQuery.setStarttime(bill.getStarttime());
propertyQuery.setEndtime(bill.getEndtime());
if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode())) {
propertyQuery.setRentShopType(EnumRentShopType.SHOP.getCode());
} else {
propertyQuery.setRentShopType(EnumRentShopType.POINT.getCode());
}
propertyQuery.setIsPreview(EnumIsPreview.NO.getCode());
WxBillProperty property = wxBillPropertyMapper.selectBillOne(propertyQuery);
if (property != null && !property.getStatus().equals(EnumBillRentStatus.PAID.getCode())) {
long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact();
if (property.getOwe() <= pay) {
property.setStatus(EnumBillRentStatus.PAID.getCode());
Date payDate = bill.getPayDate();
Date receiveDate = bill.getReceiveDate();
property.setExpiredDay(0L);
if (payDate.after(receiveDate)) {
int expiredDay = DateUtils.daysBetween(receiveDate, payDate);
property.setExpiredDay((long) expiredDay);
}
}
property.setPay(property.getPay() + pay);
property.setOwe(property.getOwe() - pay);
property.setPayDate(bill.getPayDate());
property.setReceiveDate(bill.getReceiveDate());
wxBillPropertyMapper.updateByPrimaryKey(property);
addActionImport(property.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr());
}
} else {
logger.error("账单导入失败");
}
//记数
stringRedisTemplate.opsForHash().increment(importKey, "processCount", 1);
stringRedisTemplate.expire(importKey, 10, TimeUnit.SECONDS);
}

public void addActionImport(Long billId, String payWay, Date payDate, MallUserInfo user, String pay) {
WxBillAction wxBillAction = new WxBillAction();
wxBillAction.setBillId(billId);


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