| @@ -205,6 +205,7 @@ public class WxPropertyContractController extends WxContractBaseController { | |||
| if(propertyContractHasWorkFlow(contract)) { | |||
| return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"租赁合同存在工作流,不允许直接生效。"); | |||
| } | |||
| if(contract.getOperationType().intValue() == EnumContractOperationType.PART.getCode().intValue()) { | |||
| if (contract.getRentShopType().intValue() == EnumRentShopType.SHOP.getCode().intValue()) { | |||
| contract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_PRO_CONTRACT, EnumFlowContractType.PROPERTY, contract.getRemark(), contract.getId(),null)); | |||
| @@ -240,10 +240,7 @@ public class WxRentContractController extends WxContractBaseController { | |||
| return new ResultData(Result.ERROR,"商户未绑定店铺!"); | |||
| } | |||
| WxRentContract rentq = new WxRentContract(); | |||
| List<Integer> status = new ArrayList<Integer>(); | |||
| status.add(EnumRentContractStatus.PAING.getCode()); | |||
| status.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); | |||
| rentq.setStatuss(status); | |||
| rentq.setStatuss(EnumRentContractStatus.getValidStatus()); | |||
| rentq.updateTenantInfo(getUser()); | |||
| List<WxRentContract> rentContractList = wxRentContractService.findList(rentq); | |||
| List<Long> rentShopList = new ArrayList<Long>(); | |||
| @@ -300,10 +297,7 @@ public class WxRentContractController extends WxContractBaseController { | |||
| public ResultData getRentContractList(@ModelAttribute WxRentContract wxRentContract) { | |||
| logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList"); | |||
| wxRentContract.updateTenantInfo(getTenantInfo()); | |||
| List<Integer> statuss = new ArrayList<Integer>(); | |||
| statuss.add(EnumRentContractStatus.PAING.getCode()); | |||
| statuss.add(EnumRentContractStatus.OUT_DATE.getCode()); | |||
| wxRentContract.setStatuss(statuss); | |||
| wxRentContract.setStatuss(EnumRentContractStatus.getValidStatus()); | |||
| wxRentContract.setSortColumn(BaseEntity.SortField.Createtime_DESC.getValue()); | |||
| PageInfo<WxRentContract> page = wxRentContractService.getRentContractList(wxRentContract, 1, 100000); | |||
| if (null != page && null != page.getList()) { | |||
| @@ -443,6 +437,23 @@ public class WxRentContractController extends WxContractBaseController { | |||
| if(rentContractHasWorkFlow(rentContract)) { | |||
| return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"租赁合同存在工作流,不允许直接生效。"); | |||
| } | |||
| //判断是否该合同的时间和有效的合同是否冲突 | |||
| List<Long> shopIds = rentContract.shopIdsByRentInfo(); | |||
| for (Long sid: shopIds) { | |||
| WxRentContract rcq = new WxRentContract(); | |||
| rcq.setStatuss(EnumRentContractStatus.getValidStatus()); | |||
| rcq.setQueryShopId(sid); | |||
| List<WxRentContract> crcs = wxRentContractService.findList(rcq); | |||
| if (null != crcs) { | |||
| for (WxRentContract crc : crcs) { | |||
| if((rentContract.getRentalEndDate().before(crc.getRentalStartDate()) && rentContract.getRentalStartDate().after(new Date())) || | |||
| rentContract.getRentalStartDate().after(crc.getRentalEndDate())) { | |||
| }else { | |||
| return new ResultData(Result.ERROR,"店铺["+sid+"]的计租时间区间与合同["+crc.getContractNumber()+"]有冲突。"); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| if(rentContract.getOperationType().intValue() == EnumContractOperationType.PART.getCode().intValue()) { | |||
| if (rentContract.getRentShopType().intValue() == EnumRentShopType.SHOP.getCode().intValue()) { | |||
| @@ -470,10 +481,7 @@ public class WxRentContractController extends WxContractBaseController { | |||
| if (null == wxRentContract) wxRentContract = new WxRentContract(); | |||
| wxRentContract.updateTenantInfo(getTenantInfo()); | |||
| if (1 == validStatus) { | |||
| List<Integer> statuss = new ArrayList<Integer>(); | |||
| statuss.add(EnumRentContractStatus.PAING.getCode()); | |||
| statuss.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); | |||
| wxRentContract.setStatuss(statuss); | |||
| wxRentContract.setStatuss(EnumRentContractStatus.getValidStatus()); | |||
| } | |||
| return new ResultData(wxRentContractService.getRentContractList(wxRentContract, pageNum, pageSize)); | |||
| } | |||
| @@ -246,6 +246,10 @@ public class WxRentContract extends TenantEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value = "联营扣点-时间范围 1年2月3周期", name = "busDiscountTime") | |||
| private Integer busDiscountTime; | |||
| @io.swagger.annotations.ApiModelProperty(value = "查询店铺", name = "queryShopId") | |||
| @TableField(exist = false) | |||
| private Long queryShopId; | |||
| public void setAdjustPeriodHandle() { | |||
| if(EnumPriceUnit.D.getCode().equals(this.getPriceUnit()) && EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode().equals(adjustPeriod)){ | |||
| @@ -1,5 +1,7 @@ | |||
| package com.iformall.enums; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| /** | |||
| * @author gongbiao | |||
| @@ -53,4 +55,11 @@ public enum EnumRentContractStatus { | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| public static List<Integer> getValidStatus() { | |||
| List<Integer> retList = new ArrayList<Integer>(); | |||
| retList.add(PAING.getCode()); | |||
| retList.add(READY_FOR_PAING.getCode()); | |||
| return retList; | |||
| } | |||
| } | |||
| @@ -266,15 +266,13 @@ public class WxMerchantServiceImpl implements WxMerchantService { | |||
| WxRentContract wxRentContract = new WxRentContract(); | |||
| wxRentContract.setMerchantId(id); | |||
| long countRentContract = wxRentContractMapper.selectList(new QueryWrapper<>(wxRentContract)).parallelStream(). | |||
| filter(c -> c.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) || | |||
| c.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); | |||
| filter(c -> EnumRentContractStatus.getValidStatus().contains(c.getStatus())).count(); | |||
| //是否有物业合同 | |||
| WxPropertyContract wxPropertyContract = new WxPropertyContract(); | |||
| wxPropertyContract.setMerchantId(id); | |||
| long countPropertyContract = wxPropertyContractMapper.selectList(new QueryWrapper<>(wxPropertyContract)).parallelStream(). | |||
| filter(c -> c.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) || | |||
| c.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); | |||
| filter(c -> EnumRentContractStatus.getValidStatus().contains(c.getStatus())).count(); | |||
| //商户状态停用-没有租赁合同和物业合同才允许停用 | |||
| if (countRentContract == 0 || countPropertyContract == 0){ | |||
| wxMerchant.setStatus(EnumMerchantStatus.NOT_VALID.getCode()); | |||
| @@ -832,15 +830,16 @@ public class WxMerchantServiceImpl implements WxMerchantService { | |||
| WxRentContract wxRentContract = new WxRentContract(); | |||
| wxRentContract.setMerchantId(id); | |||
| long countRentContract = wxRentContractMapper.selectList(new QueryWrapper<>(wxRentContract)).parallelStream(). | |||
| filter(c -> c.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) || | |||
| c.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); | |||
| // filter(c -> c.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) || | |||
| // c.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); | |||
| filter(c -> EnumRentContractStatus.getValidStatus().contains(c.getStatus())).count(); | |||
| //是否有物业合同 | |||
| WxPropertyContract wxPropertyContract = new WxPropertyContract(); | |||
| wxPropertyContract.setMerchantId(id); | |||
| long countPropertyContract = wxPropertyContractMapper.selectList(new QueryWrapper<>(wxPropertyContract)).parallelStream(). | |||
| filter(c -> c.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) || | |||
| c.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); | |||
| filter(c -> EnumRentContractStatus.getValidStatus().contains(c.getStatus())).count(); | |||
| //没有租赁合同和物业合同才允许停用商户和解绑商铺 | |||
| if (countRentContract == 0 || countPropertyContract == 0){ | |||
| //停用商户 | |||
| @@ -950,8 +950,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService | |||
| // propertyContract.getStatus().equals(EnumRentContractStatus.RENT_PAID.getCode()) || | |||
| // propertyContract.getStatus().equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count(); | |||
| long count = select.stream().filter(propertyContract -> propertyContract.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) || | |||
| propertyContract.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); | |||
| long count = select.stream().filter(propertyContract -> EnumRentContractStatus.getValidStatus().contains(propertyContract.getStatus())).count(); | |||
| if (count > 0) { | |||
| return new ResultData(true); | |||
| } | |||
| @@ -1125,9 +1124,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService | |||
| public void outDateContract(WxMall wxMall) { | |||
| //查询有计租合同的商户 | |||
| WxPropertyContract wr = new WxPropertyContract(); | |||
| List<Integer> statuss = new ArrayList<Integer>(); | |||
| statuss.add(EnumRentContractStatus.PAING.getCode()); | |||
| wr.setStatuss(statuss); | |||
| wr.setStatuss(EnumRentContractStatus.getValidStatus()); | |||
| List<WxPropertyContract> contractList = wxPropertyContractMapper.findList(wr); | |||
| for (WxPropertyContract contract: contractList) { | |||
| try { | |||
| @@ -1497,10 +1497,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| wxRentContract.updateTenantInfo(wxRentContract); | |||
| wxPropertyContract.setRentContractId(wxRentContract.getId()); | |||
| //终止有效的合同 | |||
| List<Integer> validstatuss = new ArrayList<Integer>(); | |||
| validstatuss.add(EnumRentContractStatus.PAING.getCode()); | |||
| validstatuss.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); | |||
| wxPropertyContract.setStatuss(validstatuss); | |||
| wxPropertyContract.setStatuss(EnumRentContractStatus.getValidStatus()); | |||
| wxPropertyContract.setUpdatetime(new Date()); | |||
| wxPropertyContract.setStatus(EnumRentContractStatus.TERMINATE.getCode()); | |||
| wxPropertyContractMapper.endContract(wxRentContract); | |||
| @@ -2502,9 +2499,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| public void outDateContract(WxMall wxMall) { | |||
| //查询有计租合同的商户 | |||
| WxRentContract wr = new WxRentContract(); | |||
| List<Integer> statuss = new ArrayList<Integer>(); | |||
| statuss.add(EnumRentContractStatus.PAING.getCode()); | |||
| wr.setStatuss(statuss); | |||
| wr.setStatuss(EnumRentContractStatus.getValidStatus()); | |||
| List<Long> merchantIds = wxRentContractMapper.getMerchantIdsByStatuss(wr); | |||
| for (Long mid: merchantIds) { | |||
| try { | |||
| @@ -2561,10 +2556,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| public boolean hasOtherValidContractShop(WxRentContract wxRentContract) { | |||
| WxRentContract wrc = new WxRentContract(); | |||
| wrc.setMerchantId(wxRentContract.getMerchantId()); | |||
| List<Integer> validstatuss = new ArrayList<Integer>(); | |||
| validstatuss.add(EnumRentContractStatus.PAING.getCode()); | |||
| validstatuss.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); | |||
| wrc.setStatuss(validstatuss); | |||
| wrc.setStatuss(EnumRentContractStatus.getValidStatus()); | |||
| List<WxRentContract> contractList = wxRentContractMapper.findList(wrc); | |||
| boolean exists =false; | |||
| for (WxRentContract wc : contractList) { | |||
| @@ -133,8 +133,7 @@ public class WxShopServiceImpl implements WxShopService { | |||
| // .filter(r -> !r.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) && | |||
| // !r.getStatus().equals(EnumRentContractStatus.RENT_PAID.getCode()) && | |||
| // !r.getStatus().equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count(); | |||
| .filter(r -> !r.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) && | |||
| !r.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); | |||
| .filter(r -> !EnumRentContractStatus.getValidStatus().contains(r.getStatus())).count(); | |||
| } else { | |||
| @@ -142,8 +141,7 @@ public class WxShopServiceImpl implements WxShopService { | |||
| // count = list.stream().filter(r -> !r.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) && | |||
| // !r.getStatus().equals(EnumRentContractStatus.RENT_PAID.getCode()) && | |||
| // !r.getStatus().equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count(); | |||
| count = list.stream().filter(r -> !r.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) && | |||
| !r.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); | |||
| count = list.stream().filter(r -> EnumRentContractStatus.getValidStatus().contains(r.getStatus())).count(); | |||
| } | |||
| if (count > 0) { | |||
| return new ResultData(ErrorCode.SHOP_CONTRACT_HAS_CONNECT); | |||
| @@ -47,11 +47,15 @@ public class InvestListener implements ApplicationListener<InvestEvent> { | |||
| //if (Objects.equals(EnumRentContractStatus.INTENTION, rentContractStatus)) { | |||
| // status = EnumTaskStatus.INTENTION; | |||
| //} else | |||
| if (Objects.equals(EnumRentContractStatus.READY_FOR_PAING, rentContractStatus)) { | |||
| if (EnumRentContractStatus.getValidStatus().contains(rentContractStatus.getCode())) { | |||
| status = EnumTaskStatus.FINISH; | |||
| } else if (Objects.equals(EnumRentContractStatus.PAING, rentContractStatus)) { | |||
| status = EnumTaskStatus.FINISH; | |||
| } | |||
| } | |||
| //if (Objects.equals(EnumRentContractStatus.READY_FOR_PAING, rentContractStatus)) { | |||
| // status = EnumTaskStatus.FINISH; | |||
| //} else if (Objects.equals(EnumRentContractStatus.PAING, rentContractStatus)) { | |||
| // status = EnumTaskStatus.FINISH; | |||
| //} | |||
| //else if (Objects.equals(EnumRentContractStatus.CONTRACT_END_SOON, rentContractStatus)) { | |||
| // status = EnumTaskStatus.FINISH; | |||
| //} | |||
| @@ -130,7 +130,7 @@ | |||
| <if test=" null != endDate and '' != endDate">and `end_date` = #{endDate}</if> | |||
| <if test=" null != rentShopType and '' != rentShopType">and `rent_shop_type` = #{rentShopType}</if> | |||
| <if test=" null != operationType and '' != operationType">and `operation_type` = #{operationType}</if> | |||
| <if test=" null != queryShopId and '' != queryShopId">and json_contains(json_extract(rent_info,'$[*].shopId'),concat('"',#{queryShopId},'"'))</if> | |||
| <if test=" null != statuss "> | |||
| and status in | |||
| <foreach collection="statuss" index="index" item="statusItem" open="(" separator="," close=")"> | |||