@@ -236,7 +236,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
public ResultData update(WxRentContract record, Long userId,String userName) {
public ResultData update(WxRentContract record, Long userId,String userName) {
ResultData resultData = getResultDataForUpdate(record, userId);
ResultData resultData = getResultDataForUpdate(record, userId);
try {
try {
// 启动审批流
//启动审批流
if(record.getFlowParams() != null){
if(record.getFlowParams() != null){
record.getFlowParams().put("businessId",record.getId().toString());
record.getFlowParams().put("businessId",record.getId().toString());
if(record.getMerchantId() != null) {
if(record.getMerchantId() != null) {
@@ -244,7 +244,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
}
}
wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId());
wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId());
// 合同状态改成待签约
//合同状态改成待签约
WxRentContract updateRentContract = new WxRentContract();
WxRentContract updateRentContract = new WxRentContract();
updateRentContract.setId(record.getId());
updateRentContract.setId(record.getId());
updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode());
updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode());
@@ -312,6 +312,25 @@ public class WxRentContractServiceImpl implements WxRentContractService {
logger.error("更新租赁合同信息失败,e:" + e.getMessage());
logger.error("更新租赁合同信息失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
}
//删除预账单
wxBillRentMapper.deletePreviewBill(record);
//重新生成
WxMerchant wxMerchant = new WxMerchant();
buildRent(wxMerchant,null);
int receivePeriod = record.getReceivePeriod().intValue();
Integer lease = record.getLease();
Date rentalStartDate = record.getRentalStartDate();
Integer price = record.getPrice();
//按月计租
List<WxBillRent> resultList;
if (record.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode())) {
resultList = buildRentMonth(wxMerchant, userId, record, receivePeriod, lease, rentalStartDate, price,EnumIsPreview.YES.getCode());
} else {
//按日计租
resultList = buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, record, userId, wxMerchant, 0,EnumIsPreview.YES.getCode());
}
wxRentContract.setPreviewBillRentList(resultList);
return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", wxRentContract);
return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", wxRentContract);
}
}
@@ -387,7 +406,6 @@ public class WxRentContractServiceImpl implements WxRentContractService {
@Override
@Override
@Transactional(rollbackFor = {Exception.class})
@Transactional(rollbackFor = {Exception.class})
public void buildRent(WxMerchant wxMerchant, Long userId) {
public void buildRent(WxMerchant wxMerchant, Long userId) {
//根据商户ID找出合同
//根据商户ID找出合同
WxRentContract wxRentContract = new WxRentContract();
WxRentContract wxRentContract = new WxRentContract();
wxRentContract.setMerchantId(wxMerchant.getId());
wxRentContract.setMerchantId(wxMerchant.getId());
@@ -400,15 +418,15 @@ public class WxRentContractServiceImpl implements WxRentContractService {
Integer price = wxRentContract.getPrice();
Integer price = wxRentContract.getPrice();
//按月计租
//按月计租
if (wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode())) {
if (wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode())) {
buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price);
buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price,EnumIsPreview.NO.getCode() );
} else {
} else {
//按日计租
//按日计租
buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0);
buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0,EnumIsPreview.NO.getCode() );
}
}
}
}
}
}
public void buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Integer price) {
public List<WxBillRent> buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Integer price,Integer isPreview ) {
String adjustRatio = wxRentContract.getAdjustRatio();
String adjustRatio = wxRentContract.getAdjustRatio();
List<Integer> integers = JSONArray.parseArray(adjustRatio, Integer.class);
List<Integer> integers = JSONArray.parseArray(adjustRatio, Integer.class);
integers.add(0, 0);
integers.add(0, 0);
@@ -432,17 +450,20 @@ public class WxRentContractServiceImpl implements WxRentContractService {
}
}
int billcount = 0;
int billcount = 0;
List<WxBillRent> resultList = new ArrayList<>();
for (int i = 0; i < size; i++) {
for (int i = 0; i < size; i++) {
Calendar instance = Calendar.getInstance();
Calendar instance = Calendar.getInstance();
instance.setTime(rentalStartDate);
instance.setTime(rentalStartDate);
//开始时间
//开始时间
instance.add(Calendar.MONTH, month * i);
instance.add(Calendar.MONTH, month * i);
billcount = buildRent(leaseArr[i], receivePeriod, priceArr[i], instance.getTime(), Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount);
List<WxBillRent> billRentList = buildRent(leaseArr[i], receivePeriod, priceArr[i], instance.getTime(), Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount,isPreview);
resultList.addAll(billRentList);
}
}
return resultList;
}
}
public int buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount) {
public L ist<WxBillRe nt> buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount,Integer isPreview ) {
List<WxBillRent> resultList = new ArrayList<>();
int extralease = lease % receivePeriod;
int extralease = lease % receivePeriod;
int extracount = extralease > 0 ? 1 : 0;
int extracount = extralease > 0 ? 1 : 0;
int paycount = lease / receivePeriod + extracount;
int paycount = lease / receivePeriod + extracount;
@@ -450,6 +471,8 @@ public class WxRentContractServiceImpl implements WxRentContractService {
final IdWorker idWorker = IdWorker.get();
final IdWorker idWorker = IdWorker.get();
for (int i = 0; i < paycount; i++) {
for (int i = 0; i < paycount; i++) {
WxBillRent wxBillRent = new WxBillRent();
WxBillRent wxBillRent = new WxBillRent();
wxBillRent.setIsPreview(isPreview);
wxBillRent.setId(idWorker.nextId());
wxBillRent.setId(idWorker.nextId());
wxBillRent.setRentContractId(wxRentContract.getId());
wxBillRent.setRentContractId(wxRentContract.getId());
wxBillRent.setPay(0);
wxBillRent.setPay(0);
@@ -524,12 +547,13 @@ public class WxRentContractServiceImpl implements WxRentContractService {
wxBillRent.setPeriod(++billcount);
wxBillRent.setPeriod(++billcount);
try {
try {
wxBillRentMapper.insertSelective(wxBillRent);
wxBillRentMapper.insertSelective(wxBillRent);
resultList.add(wxBillRent);
} catch (Exception e) {
} catch (Exception e) {
logger.error("添加租赁账单失败,e:" + e.getMessage());
logger.error("添加租赁账单失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
}
}
}
return billcoun t;
return resultLis t;
}
}