Browse Source

合同续签

release_toaliyun_real
furunxin 5 years ago
parent
commit
409d880ba7
3 changed files with 173 additions and 0 deletions
  1. +19
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractExtensionController.java
  2. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxRentContractService.java
  3. +152
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 19
- 0
mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractExtensionController.java View File

@@ -9,6 +9,7 @@ import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxRentContract;
import com.iformall.domain.po.WxShop;
import com.iformall.enums.EnumContractType;
import com.iformall.enums.EnumFromType;
import com.iformall.enums.EnumRentStartType;
import com.iformall.service.WxRentContractService;
import com.iformall.service.WxRentPropertyContractService;
@@ -104,4 +105,22 @@ public class WxRentContractExtensionController extends BaseController {
}
return wxRentContractService.extension(wxRentContract, user.getId(),user.getName(),oldDate);
}

@PostMapping("updateMoney")
@SystemControllerLog(description = "租赁合同续签-更新金额")
public ResultData updateMoney(@RequestBody WxRentContract wxRentContract) {
log.debug("[" + getIpAddr() + "] WxRentContractExtensionController::updateMoney");
if(StringUtils.isBlank(wxRentContract.getBusDiscountRatio())){
wxRentContract.setBusDiscountTime(new Integer(0));
}
MallUserInfo user = getUser();
wxRentContract.updateTenantInfo(user);
wxRentContract.setAdjustPeriodHandle();
wxRentContract.setRentPriceHandle();
Date oldDate = wxRentContract.getRentalStartDate();
if(wxRentContract.getRentStartType()!=null &&wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){
wxRentContract.setRentalStartDate(wxRentContract.getStartDate());
}
return wxRentContractService.extensionUpdate(wxRentContract, user.getId(),user.getName(), EnumFromType.OTHER.getCode(),oldDate);
}
}

+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxRentContractService.java View File

@@ -108,4 +108,6 @@ public interface WxRentContractService {
List<WxRentContract> getAllContractByMerchantId(WxRentContract wxRentContract);

ResultData extension(WxRentContract record,Long userId,String userName,Date oldRentStartDate);

ResultData extensionUpdate(WxRentContract record, Long userId,String userName,int from,Date oldRentStartDate);
}

+ 152
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java View File

@@ -2694,4 +2694,156 @@ public class WxRentContractServiceImpl implements WxRentContractService {
EventUtil.publistRentEvent(this, record);
return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", record);
}

@Transactional(rollbackFor = {Exception.class})
@Override
public ResultData extensionUpdate(WxRentContract record, Long userId, String userName, int from, Date oldRentStartDate) {
//查询预账单用于展示
WxBillRent wxBillRent = new WxBillRent();
wxBillRent.setRentContractId(record.getId());
wxBillRent.setSortColumns(BaseEntity.SortField.Period_ASC);
wxBillRent.setIsPreview(EnumIsPreview.YES.getCode());
List<WxBillRent> resultList = wxBillRentMapper.findList(wxBillRent);

//更新
ResultData resultData = getResultDataForExtensionUpdate(record, userId,from,oldRentStartDate);
if (resultData.code != Result.SUCCESS) {
return resultData;
}

if(CollectionUtils.isEmpty(record.getPreviewBillRentList())) {
if (record.getReceivePeriod() != null && record.getLease() != null
&& !record.getReceivePeriod().equals(0) && !record.getLease().equals(0)) {
//删除预账单,重新生成
wxBillRentMapper.deletePreviewBill(record);
resultList = buildRent(new WxMerchant(), null, record, EnumIsPreview.YES.getCode(),true);
}
}

//有模板,启动审批流,没有,直接生产账单
if (!CollectionUtils.isEmpty(record.getFlowParams())) {
if (wxFlowService.getModelByType((Integer) record.getFlowParams().get("businessType"), record) == null
&& record.getMerchantId() != null) {
updateRentContractStatus(record.getId());
}else{
//补录
record.getFlowParams().put("businessId", record.getId().toString());
if (record.getMerchantId() != null) {
record.getFlowParams().put("supplement", true); //设置补录
}
wxFlowService.start(record.getFlowParams(), userId, userName, record);

//合同状态改成补录状态
WxRentContract updateRentContract = new WxRentContract();
updateRentContract.setId(record.getId());
updateRentContract.setStatus(EnumRentContractStatus.SUPPLE.getCode());
wxRentContractMapper.updateStatus(updateRentContract);
logger.info("id:{},启动审批流成功 ,是否补录:{}", record.getId().toString(), record.getMerchantId() != null);
}
}else{
//审批状态重置
WxRentContract updateRentContract = new WxRentContract();
updateRentContract.setId(record.getId());
updateRentContract.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode());
updateApplyStatus(updateRentContract);
}

//保存调整金额(预账单调整)
savePreviewBill(record);

WxRentContract wxRentContract = (WxRentContract)resultData.data;
wxRentContract.setPreviewBillRentList(resultList);
return new ResultData(wxRentContract);
}

public ResultData getResultDataForExtensionUpdate(WxRentContract record, Long userId,int from,Date oldRentStartDate) {
//更新租赁合同信息
WxRentContract wxRentContract = wxRentContractMapper.selectById(record.getId());
if (wxRentContract == null) {
return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND);
}
wxRentContract.setBusDiscountTime(record.getBusDiscountTime());
wxRentContract.setBusDiscountRatio(record.getBusDiscountRatio());
wxRentContract.setPayRatio(record.getPayRatio());

int dayType = wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode()) ? Calendar.DAY_OF_MONTH : Calendar.MONTH;

Calendar instance = Calendar.getInstance();
instance.setTime(record.getRentalStartDate());
instance.add(dayType, record.getLease());
instance.add(Calendar.DAY_OF_MONTH, -1);

if(!EnumFromType.SWITCH.getCode().equals(from)){
if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
if(record.getPayRatio()!=null && record.getPayRatio().intValue() > 0){
record.setPrice(countPrice(record.getPayRatio(),record.getRevenue(),EnumMissTimeType.OTHER.getCode(),record.getAdjustPeriod(),from));
}else{
int dayCount = record.getReceivePeriod() * 30;
RatioVo ratioVo = getPayRatio(EnumGetRatioFrom.RENT.getCode(),record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount,record.getReceivePeriod());
//record.setPayRatio(ratioVo.getRatio());
record.setPrice(ratioVo.getPrice());
}
} else {
if (StringUtils.isNotEmpty(record.getPriceStr())) {
record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue());
} else {
record.setPrice(0L);
}
}
}

if (StringUtils.isNotEmpty(record.getDepositStr())) {
record.setDeposit(new BigDecimal(record.getDepositStr()).multiply(new BigDecimal(100)).longValue());
} else {
record.setDeposit(0L);
}

record.setUpdatetime(new Date());

if (record.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) {
String rentInfo = record.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
int size = rentInfoArray.size();
if (size == 0) {
return new ResultData(ErrorCode.SHOP_NOT_SELECTED);
}
//查询rent_info 包括 shopId
for (int i = 0; i < size; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
WxRentContract wxRentContractQuery = new WxRentContract();
wxRentContractQuery.updateTenantInfo(record);
Long shopId = rentInfoObject.getLong("shopId");
String shopNumber = rentInfoObject.getString("shopNumber");
if (shopId == null) {
return new ResultData(ErrorCode.SHOP_IS_NOT_FOUND.getCode(), "店铺 " + shopNumber + " 已删除");
}
WxShop wxShop = wxShopMapper.selectById(shopId);
if (wxShop == null) {
return new ResultData(ErrorCode.SHOP_IS_NOT_FOUND.getCode(), "店铺 " + shopNumber + " 已删除");
}
}
} else {
WxRentContract wxRentContractQuery = new WxRentContract();
wxRentContractQuery.updateTenantInfo(record);
wxRentContractQuery.setShopId(record.getShopId());
long count = wxRentContractMapper.queryRentContractData(wxRentContract).stream().
filter(rc -> rc.get("status").equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.RENT_PAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count();
if (count > 0) {
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND);
}
}

try {
Date tempDate = record.getRentalStartDate();
record.setRentalStartDate(oldRentStartDate);
wxRentContractMapper.updateById(record);
record.setRentalStartDate(tempDate);
} catch (Exception e) {
logger.error("更新租赁合同信息失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", wxRentContract);
}
}

Loading…
Cancel
Save