|
|
|
@@ -113,9 +113,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
|
|
|
|
@Transactional(rollbackFor = {Exception.class}) |
|
|
|
@Override |
|
|
|
public ResultData saveOrUpdate(WxRentContract record) { |
|
|
|
public ResultData save(WxRentContract record) { |
|
|
|
//保存租赁合同信息 |
|
|
|
if (record.getId() == null) { |
|
|
|
final IdWorker idWorker = IdWorker.get(); |
|
|
|
record.setId(idWorker.nextId()); |
|
|
|
if(record.getStartDate().after(record.getRentalStartDate())){ |
|
|
|
@@ -158,87 +157,95 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); |
|
|
|
} |
|
|
|
return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", record); |
|
|
|
} else {//更新租赁合同信息 |
|
|
|
WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(record.getId()); |
|
|
|
if (wxRentContract == null) { |
|
|
|
return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); |
|
|
|
} |
|
|
|
Calendar instance = Calendar.getInstance(); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional(rollbackFor = {Exception.class}) |
|
|
|
@Override |
|
|
|
public ResultData update(WxRentContract record) { |
|
|
|
return getResultDataForUpdate(record); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultData getResultDataForUpdate(WxRentContract record) { |
|
|
|
//更新租赁合同信息 |
|
|
|
WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(record.getId()); |
|
|
|
if (wxRentContract == null) { |
|
|
|
return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); |
|
|
|
} |
|
|
|
Calendar instance = Calendar.getInstance(); |
|
|
|
instance.setTime(record.getRentalStartDate()); |
|
|
|
instance.add(Calendar.MONTH, record.getLease()); |
|
|
|
instance.add(Calendar.DAY_OF_MONTH, -1); |
|
|
|
record.setRentalEndDate(instance.getTime()); |
|
|
|
|
|
|
|
//起租结束时间 |
|
|
|
if(!record.getStartDate().equals(record.getRentalStartDate())){ |
|
|
|
instance.clear(); |
|
|
|
instance.setTime(record.getRentalStartDate()); |
|
|
|
instance.add(Calendar.MONTH, record.getLease()); |
|
|
|
instance.add(Calendar.DAY_OF_MONTH, -1); |
|
|
|
record.setRentalEndDate(instance.getTime()); |
|
|
|
record.setEndDate(instance.getTime()); |
|
|
|
}else{ |
|
|
|
record.setEndDate(record.getStartDate()); |
|
|
|
} |
|
|
|
|
|
|
|
//起租结束时间 |
|
|
|
if(!record.getStartDate().equals(record.getRentalStartDate())){ |
|
|
|
instance.clear(); |
|
|
|
instance.setTime(record.getRentalStartDate()); |
|
|
|
instance.add(Calendar.DAY_OF_MONTH, -1); |
|
|
|
record.setEndDate(instance.getTime()); |
|
|
|
}else{ |
|
|
|
record.setEndDate(record.getStartDate()); |
|
|
|
if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { |
|
|
|
if (record.getRevenue() == null || record.getRevenue().intValue() == 0) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "营业额不能为空且大于0"); |
|
|
|
} |
|
|
|
|
|
|
|
if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { |
|
|
|
if (record.getRevenue() == null || record.getRevenue().intValue() == 0) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "营业额不能为空且大于0"); |
|
|
|
} |
|
|
|
if (record.getPayRatio() == null || record.getPayRatio().intValue() == 0) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "支付比例不能为空且大于0"); |
|
|
|
} |
|
|
|
BigDecimal hundred = new BigDecimal(100); |
|
|
|
BigDecimal revenue = new BigDecimal(record.getRevenue()).divide(hundred); |
|
|
|
BigDecimal payRatio = new BigDecimal(record.getPayRatio()).divide(hundred); |
|
|
|
BigDecimal price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); |
|
|
|
record.setPrice(price.multiply(hundred).intValue()); |
|
|
|
} |
|
|
|
if (record.getPrice() == null || record.getPrice().intValue() == 0) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "租金不能为空且大于0"); |
|
|
|
} |
|
|
|
if (record.getDeposit() == null || record.getDeposit().intValue() == 0) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "押金不能为空且大于0"); |
|
|
|
if (record.getPayRatio() == null || record.getPayRatio().intValue() == 0) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "支付比例不能为空且大于0"); |
|
|
|
} |
|
|
|
BigDecimal hundred = new BigDecimal(100); |
|
|
|
BigDecimal revenue = new BigDecimal(record.getRevenue()).divide(hundred); |
|
|
|
BigDecimal payRatio = new BigDecimal(record.getPayRatio()).divide(hundred); |
|
|
|
BigDecimal price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); |
|
|
|
record.setPrice(price.multiply(hundred).intValue()); |
|
|
|
} |
|
|
|
if (record.getPrice() == null || record.getPrice().intValue() == 0) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "租金不能为空且大于0"); |
|
|
|
} |
|
|
|
if (record.getDeposit() == null || record.getDeposit().intValue() == 0) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "押金不能为空且大于0"); |
|
|
|
} |
|
|
|
|
|
|
|
record.setUpdatetime(new Date()); |
|
|
|
try { |
|
|
|
WxRentContract wxRentContractParams = new WxRentContract(); |
|
|
|
wxRentContractParams.setTenantId(record.getTenantId()); |
|
|
|
wxRentContractParams.setShopId(record.getShopId()); |
|
|
|
long count = wxRentContractMapper.queryRentContractData(wxRentContractParams).stream(). |
|
|
|
filter(rc -> !rc.get("status").equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode()) |
|
|
|
&& !rc.get("status").equals(EnumRentContractStatus.WAIT_SIGN.getCode()) |
|
|
|
&& !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode()) |
|
|
|
&& !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode()) |
|
|
|
&& !rc.get("id").equals(wxRentContract.getId())).count(); |
|
|
|
if (count > 0) { |
|
|
|
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND); |
|
|
|
} |
|
|
|
wxRentContractMapper.updateByPrimaryKeySelective(record); |
|
|
|
//建立账单 |
|
|
|
if (record.getMerchantId() != null && record.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) |
|
|
|
&& record.getReceivePeriod() != null && record.getDeposit() > 0 && record.getPrice() > 0) { |
|
|
|
WxBillRent wxBillRent = new WxBillRent(); |
|
|
|
wxBillRent.setMerchantId(record.getMerchantId()); |
|
|
|
List<Map<String, Object>> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); |
|
|
|
if (billRentList.size() == 0) { |
|
|
|
WxMerchant wxMerchant = new WxMerchant(); |
|
|
|
wxMerchant.setId(record.getMerchantId()); |
|
|
|
wxMerchant.setTenantId(record.getTenantId()); |
|
|
|
//租金 |
|
|
|
buildRent(wxMerchant); |
|
|
|
//押金 |
|
|
|
buildDeposit(wxMerchant); |
|
|
|
} |
|
|
|
record.setUpdatetime(new Date()); |
|
|
|
try { |
|
|
|
WxRentContract wxRentContractParams = new WxRentContract(); |
|
|
|
wxRentContractParams.setTenantId(record.getTenantId()); |
|
|
|
wxRentContractParams.setShopId(record.getShopId()); |
|
|
|
long count = wxRentContractMapper.queryRentContractData(wxRentContractParams).stream(). |
|
|
|
filter(rc -> !rc.get("status").equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode()) |
|
|
|
&& !rc.get("status").equals(EnumRentContractStatus.WAIT_SIGN.getCode()) |
|
|
|
&& !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode()) |
|
|
|
&& !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode()) |
|
|
|
&& !rc.get("id").equals(wxRentContract.getId())).count(); |
|
|
|
if (count > 0) { |
|
|
|
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND); |
|
|
|
} |
|
|
|
wxRentContractMapper.updateByPrimaryKeySelective(record); |
|
|
|
//建立账单 |
|
|
|
if (record.getMerchantId() != null && record.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) |
|
|
|
&& record.getReceivePeriod() != null && record.getDeposit() > 0 && record.getPrice() > 0) { |
|
|
|
WxBillRent wxBillRent = new WxBillRent(); |
|
|
|
wxBillRent.setMerchantId(record.getMerchantId()); |
|
|
|
List<Map<String, Object>> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); |
|
|
|
if (billRentList.size() == 0) { |
|
|
|
WxMerchant wxMerchant = new WxMerchant(); |
|
|
|
wxMerchant.setId(record.getMerchantId()); |
|
|
|
wxMerchant.setTenantId(record.getTenantId()); |
|
|
|
//租金 |
|
|
|
buildRent(wxMerchant); |
|
|
|
//押金 |
|
|
|
buildDeposit(wxMerchant); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("更新租赁合同信息失败,e:" + e.getMessage()); |
|
|
|
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); |
|
|
|
} |
|
|
|
return new ResultData(Result.SUCCESS, "更新租赁合同信息成功"); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("更新租赁合同信息失败,e:" + e.getMessage()); |
|
|
|
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
return new ResultData(Result.SUCCESS, "更新租赁合同信息成功"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = {Exception.class}) |
|
|
|
public void buildDeposit(WxMerchant wxMerchant) { |
|
|
|
MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute("userSession"); |
|
|
|
@@ -682,6 +689,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
exportWord(templatePath, filepath, filename, result, request, response); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public ResultData updateFile(WxRentContract record) { |
|
|
|
return getResultDataForUpdate(record); |
|
|
|
} |
|
|
|
|
|
|
|
public Map<String, Object> getRentAndPropertyInfo(String id) { |
|
|
|
logger.info("获取租赁物业合同数据>>>>>>id:"+id); |
|
|
|
WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(id); |
|
|
|
|