From 763d16facc3d3e7389bffa642aea81bef4910ed9 Mon Sep 17 00:00:00 2001 From: winter Date: Fri, 5 Jul 2024 17:31:16 +0800 Subject: [PATCH] fix property contract --- .../WxPropertyContractController.java | 90 +++++++-- .../domain/po/WxPropertyContract.java | 69 +++++-- .../enums/EnumPropertyCreateType.java | 35 ++++ .../impl/WxBillPropertyServiceImpl.java | 2 +- .../impl/WxPropertyContractServiceImpl.java | 179 +++++++++--------- .../impl/WxRentContractServiceImpl.java | 31 ++- .../mapper/WxPropertyContractMapper.xml | 15 +- 7 files changed, 277 insertions(+), 144 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumPropertyCreateType.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java index 3f61dacf7..4feb556fa 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java @@ -28,6 +28,8 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -161,14 +163,21 @@ public class WxPropertyContractController extends WxContractBaseController { } @PostMapping("add") - @SystemControllerLog(description = "物业合同-新增") public ResultData add(@RequestBody WxPropertyContract wxPropertyContract) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::add"); MallUserInfo user = getUser(); wxPropertyContract.updateTenantInfo(user); wxPropertyContract.setAdjustPeriodHandle(); - WxRentContract rentContract = rentContractService.getSimpleDeatil(wxPropertyContract.getRentContractId()); - wxPropertyContract.calcutePrice(rentContract); + if (wxPropertyContract.getCreateType().intValue() == EnumPropertyCreateType.BY_SHOP.getCode().intValue()) { + if (StringUtils.isBlank(wxPropertyContract.getRentArea()) || StringUtils.isBlank(wxPropertyContract.getShopIds())) { + return new ResultData("rentArea,shopIds参数不能为空"); + } + wxPropertyContract.setShopIds(","+wxPropertyContract.getShopIds()+","); + wxPropertyContract.calcutePrice(wxPropertyContract.getRentArea()); + }else { + WxRentContract rentContract = rentContractService.getSimpleDeatil(wxPropertyContract.getRentContractId()); + wxPropertyContract.calcutePrice(rentContract.getRentArea()); + } Integer contractType = wxRentPropertyContractService.getContractType(wxPropertyContract.getRentShopType(), wxPropertyContract.getOperationType(), EnumContractType.PROPERTY.getCode()); wxPropertyContract.setContractType(contractType); if(wxPropertyContract.getRentStartType()!=null && wxPropertyContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ @@ -177,22 +186,25 @@ public class WxPropertyContractController extends WxContractBaseController { return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName(),false); } + //物业合同-更新租赁开始日期 @PostMapping("updateRentStartTime") - @SystemControllerLog(description = "物业合同-更新租赁开始日期") public ResultData updateRentStartTime(@RequestBody WxPropertyContract wxPropertyContract) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::updateRentStartTime"); WxPropertyContract propertyContract = wxPropertyContractMapper.selectById(wxPropertyContract.getId()); MallUserInfo user = getUser(); propertyContract.updateTenantInfo(user); propertyContract.setAdjustPeriodHandle(); - WxRentContract rentContract = rentContractService.getSimpleDeatil(propertyContract.getRentContractId()); - wxPropertyContract.calcutePrice(rentContract); + if (propertyContract.getCreateType().intValue() == EnumPropertyCreateType.BY_SHOP.getCode().intValue()) { + propertyContract.calcutePrice(propertyContract.getRentArea()); + }else { + WxRentContract rentContract = rentContractService.getSimpleDeatil(propertyContract.getRentContractId()); + wxPropertyContract.calcutePrice(rentContract.getRentArea()); + } propertyContract.setRentStartType(wxPropertyContract.getRentStartType()); return wxPropertyContractService.saveOrUpdate(propertyContract, user.getId(), user.getName(),false); } - @PostMapping("update") - @SystemControllerLog(description = "物业合同-修改") + @PostMapping("update-第三步") public ResultData update(@RequestBody WxPropertyContract wxPropertyContract) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::update"); MallUserInfo user = getUser(); @@ -209,8 +221,18 @@ public class WxPropertyContractController extends WxContractBaseController { */ @PostMapping("calcutePrice") public ResultData calcutePrice(@RequestBody WxPropertyContract wxPropertyContract) { - WxRentContract rentContract = rentContractService.getSimpleDeatil(wxPropertyContract.getRentContractId()); - wxPropertyContract.calcutePrice(rentContract); + if (null == wxPropertyContract.getCreateType()) { + return new ResultData("createType参数不能为空"); + } + if (wxPropertyContract.getCreateType().intValue() == EnumPropertyCreateType.BY_SHOP.getCode().intValue()) { + if (StringUtils.isBlank(wxPropertyContract.getRentArea())) { + return new ResultData("rentArea,shopIds参数不能为空"); + } + wxPropertyContract.calcutePrice(wxPropertyContract.getRentArea()); + }else { + WxRentContract rentContract = rentContractService.getSimpleDeatil(wxPropertyContract.getRentContractId()); + wxPropertyContract.calcutePrice(rentContract.getRentArea()); + } return new ResultData(wxPropertyContract.getPrice()); } @@ -305,13 +327,43 @@ public class WxPropertyContractController extends WxContractBaseController { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"租赁合同状态为草稿才能进行此操作"); } - if (rentHasValidProperty(contract)) { - return new ResultData(Result.ERROR, "租金合同["+contract.getContractNumber()+"]存在有效或者审批中的物业合同。"); + if (contract.getCreateType().intValue() == EnumPropertyCreateType.BY_SHOP.getCode().intValue()) { + if (shopHasValidProperty(contract)) { + return new ResultData(Result.ERROR, "店铺存在有效或者审批中的物业合同。"); + } + }else { + if (rentHasValidProperty(contract)) { + return new ResultData(Result.ERROR, "租金合同["+contract.getContractNumber()+"]存在有效或者审批中的物业合同。"); + } } + wxPropertyContractService.updatePropertyContractStatus(proertyContract.getId()); return new ResultData(Result.SUCCESS,"合同生效成功!"); } + private boolean shopHasValidProperty(WxPropertyContract contract) { + WxPropertyContract wpc = new WxPropertyContract(); + String[] shopIds = contract.getShopIds().split(","); + List sidl = new ArrayList(); + for (String sid : shopIds) { + if (StringUtils.isNotBlank(sid)) { + sidl.add(Long.parseLong(sid)); + } + } + if (sidl.size() == 0 ) { + return false; + } + wpc.setShopIdsQuery(sidl); + List statuss = EnumRentContractStatus.getValidStatus(); + statuss.add(EnumRentContractStatus.PERFORMANCE.getCode()); + wpc.setStatuss(statuss); + List list = wxPropertyContractService.findList(wpc); + if (null != list && list.size() > 0 ) { + return true; + } + return false; + } + private boolean rentHasValidProperty(WxPropertyContract contract) { WxPropertyContract wpc = new WxPropertyContract(); wpc.setRentContractId(contract.getRentContractId()); @@ -339,8 +391,14 @@ public class WxPropertyContractController extends WxContractBaseController { return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"物业合同不存在工作流,不能提交审批。"); } - if (rentHasValidProperty(contract)) { - return new ResultData(Result.ERROR, "租金合同["+contract.getContractNumber()+"]存在有效或者审批中的物业合同。"); + if (contract.getCreateType().intValue() == EnumPropertyCreateType.BY_SHOP.getCode().intValue()) { + if (shopHasValidProperty(contract)) { + return new ResultData(Result.ERROR, "店铺存在有效或者审批中的物业合同。"); + } + }else { + if (rentHasValidProperty(contract)) { + return new ResultData(Result.ERROR, "租金合同["+contract.getContractNumber()+"]存在有效或者审批中的物业合同。"); + } } if(contract.getOperationType().intValue() == EnumContractOperationType.PART.getCode().intValue()) { @@ -372,7 +430,6 @@ public class WxPropertyContractController extends WxContractBaseController { @RequestMapping("/download") - @SystemControllerLog(description = "物业合同-下载") public void download(HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::download"); wxPropertyContractService.download(request, response); @@ -404,7 +461,6 @@ public class WxPropertyContractController extends WxContractBaseController { @GetMapping("/hasRentContract") @ApiImplicitParam(name = "rentContractId", value = "rentContractId", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "物业合同-是否存在相关的租赁合同") public ResultData hasRentContract(Long rentContractId) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::hasRentContract"); //return wxPropertyContractService.hasRentContract(rentContractId); @@ -413,7 +469,6 @@ public class WxPropertyContractController extends WxContractBaseController { @PostMapping("updatePropertyContractStatus") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "物业合同-更新合同状态") public ResultData updatePropertyContractStatus(@RequestBody WxPropertyContract wxPropertyContract) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::updateRentContractStatus"); //return wxPropertyContractService.updatePropertyContractStatus(wxPropertyContract.getId()); @@ -426,7 +481,6 @@ public class WxPropertyContractController extends WxContractBaseController { * @return */ @PostMapping("buildBillPriceList") - @SystemControllerLog(description = "物业合同-生成账单列表金额") public ResultData buildBillPriceList(@RequestBody WxPropertyContract wxPropertyContract) throws Exception{ logger.debug("[" + getIpAddr() + "] WxRentContractController::buildBillPriceList"); WxPropertyContract dbRent = wxPropertyContractMapper.selectById(wxPropertyContract.getId()); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java index 46abf0ec9..9f498af5b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.common.SortColumn; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumPriceUnit; +import com.iformall.enums.EnumPropertyCreateType; import com.iformall.enums.EnumRentContractAdjustPeriod; import com.iformall.enums.EnumYesOrNo; @@ -20,6 +21,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; /** @@ -55,10 +57,10 @@ public class WxPropertyContract extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="物业费(分)",name="price") private String price; - @io.swagger.annotations.ApiModelProperty(value="计租开始时间",name="rentalStartDate") + @io.swagger.annotations.ApiModelProperty(value="起租开始时间",name="rentalStartDate") private Date rentalStartDate; - @io.swagger.annotations.ApiModelProperty(value="计租结束时间",name="rentalEndDate") + @io.swagger.annotations.ApiModelProperty(value="起租结束时间",name="rentalEndDate") private Date rentalEndDate; @io.swagger.annotations.ApiModelProperty(value="签定合同时间",name="signDate") @@ -132,10 +134,10 @@ public class WxPropertyContract extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="租金合同ID",name="rentContractId") private Long rentContractId; - @io.swagger.annotations.ApiModelProperty(value = "起租开始时间", name = "rentalStartDate") + @io.swagger.annotations.ApiModelProperty(value = "计租日", name = "startDate") private Date startDate; - @io.swagger.annotations.ApiModelProperty(value = "起租结束时间", name = "rentalEndDate") + @io.swagger.annotations.ApiModelProperty(value = "", name = "endDate") private Date endDate; @io.swagger.annotations.ApiModelProperty(value = "终止时间", name = "endContractTime") @@ -216,6 +218,15 @@ public class WxPropertyContract extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "到期提醒手机号", name = "outDateNotifyPhone") private String outDateNotifyPhone; + @io.swagger.annotations.ApiModelProperty(value = "创建方式EnumPropertyCreateType", name = "createType") + private Integer createType; + @io.swagger.annotations.ApiModelProperty(value = "店铺ids,根据店铺创建", name = "shopIds") + private String shopIds; + @io.swagger.annotations.ApiModelProperty(value = "店铺号,根据店铺创建", name = "shopNumbers") + private String shopNumbers; + @TableField(exist = false) + private List shopIdsQuery; + //查询过期提醒 @TableField(exist = false) private Integer outDateNofity; @@ -234,32 +245,52 @@ public class WxPropertyContract extends TenantEntity { } } - public void calcutePrice(WxRentContract rentContract) { + public void calcutePrice(String rentArea) { //如果是固定的,则不计算 if (null != fixedPrice && fixedPrice.equals(EnumYesOrNo.YES.getCode())) { }else { - if (StringUtils.isNoneBlank(rentContract.getRentArea()) && StringUtils.isNotBlank(this.rentPrice)) { - this.price = new BigDecimal(rentContract.getRentArea()).multiply(new BigDecimal(this.rentPrice)).setScale(this.decimalSize, RoundingMode.HALF_UP).toPlainString(); + if (StringUtils.isNotBlank(rentArea) && StringUtils.isNotBlank(this.rentPrice)) { + this.price = new BigDecimal(rentArea).multiply(new BigDecimal(this.rentPrice)).setScale(this.decimalSize, RoundingMode.HALF_UP).toPlainString(); } } } - public String getRentInfoShopNumber() { + public String getShopNumber() { StringBuffer sb = new StringBuffer(""); - String rentInfo = this.getRentInfo(); - if (!StringUtils.isBlank(rentInfo)) { - JSONArray rentInfoArray = JSONArray.parseArray(rentInfo); - int size = rentInfoArray.size(); - for (int i = 0; i < size; i++) { - JSONObject rentInfoObject = rentInfoArray.getJSONObject(i); - String shopNumber = rentInfoObject.getString("shopNumber"); - if (StringUtils.isNotBlank(shopNumber)) { - sb.append(shopNumber).append(","); - } - } + if (this.createType.intValue() == EnumPropertyCreateType.BY_RENT.getCode().intValue()) { + String rentInfo = this.getRentInfo(); + if (!StringUtils.isBlank(rentInfo)) { + JSONArray rentInfoArray = JSONArray.parseArray(rentInfo); + int size = rentInfoArray.size(); + for (int i = 0; i < size; i++) { + JSONObject rentInfoObject = rentInfoArray.getJSONObject(i); + String shopNumber = rentInfoObject.getString("shopNumber"); + if (StringUtils.isNotBlank(shopNumber)) { + sb.append(shopNumber).append(","); + } + } + } + }else { + sb.append(this.shopNumbers); } return sb.toString(); } + + public List shopIdsByShop() { + List shopList = Lists.newArrayList(); + String shopids = this.getShopIds(); + if (!StringUtils.isBlank(shopids)) { + String[] sids = shopids.split(","); + if (null != sids) { + for (int i = 0; i < sids.length; i++) { + if (StringUtils.isNotBlank(sids[i])) { + shopList.add(Long.parseLong(sids[i])); + } + } + } + } + return shopList; + } @io.swagger.annotations.ApiModelProperty(value = "合同类型", name = "contractType") private Integer contractType; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumPropertyCreateType.java b/mallinkService/src/main/java/com/iformall/enums/EnumPropertyCreateType.java new file mode 100644 index 000000000..deb804a25 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumPropertyCreateType.java @@ -0,0 +1,35 @@ +package com.iformall.enums; + +/** + */ +public enum EnumPropertyCreateType { + + BY_RENT(1, "根据租金合同创建"), + BY_SHOP(2, "根据店铺创建"), + ; + + public static EnumPropertyCreateType getEnum(Integer code) { + for (EnumPropertyCreateType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumPropertyCreateType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java index f0b7ef2da..0f37e509a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java @@ -205,7 +205,7 @@ public class WxBillPropertyServiceImpl extends WxBillBaseService implements WxBi // e.setLatePayRatio(Integer.parseInt(rent.getLatePayRatio())); // } e.setLatePayDay(rent.getLatePayDay()); - e.setShopNumber(rent.getRentInfoShopNumber()); + e.setShopNumber(rent.getShopNumber()); } // WxBillPropertyDeposit bd = billDepositMap.get(e.getPropertyContractId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index 75eb94b9a..4bf590522 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -187,39 +187,45 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } //租赁费用欠缴 - WxRentContract wxRentContract = new WxRentContract(); - wxRentContract.setId(wxPropertyContract.getRentContractId()); - result.put("rentOweCount",wxRentContractMapper.queryOweCount(wxRentContract)); - //物业费用欠缴 - WxPropertyContract propertyContract = new WxPropertyContract(); - propertyContract.setId(id); - propertyContract.updateTenantInfo(wxPropertyContract); - result.put("propertyOweCount",wxPropertyContractMapper.queryOweCount(propertyContract)); - //押金欠缴 - result.put("depositOweCount",wxBillPropertyDepositMapper.queryOweCount(propertyContract)); - //押金状态 - WxBillPropertyDeposit wxBillPropertyDeposit = new WxBillPropertyDeposit(); - wxBillPropertyDeposit.setPropertyContractId(id); - wxBillPropertyDeposit.updateTenantInfo(wxPropertyContract); - List select = wxBillPropertyDepositMapper.findList(wxBillPropertyDeposit); - if (!select.isEmpty()) { - result.put("depositStatus", select.get(0).getStatus()); - } +// WxRentContract wxRentContract = new WxRentContract(); +// wxRentContract.setId(wxPropertyContract.getRentContractId()); +// result.put("rentOweCount",wxRentContractMapper.queryOweCount(wxRentContract)); +// //物业费用欠缴 +// WxPropertyContract propertyContract = new WxPropertyContract(); +// propertyContract.setId(id); +// propertyContract.updateTenantInfo(wxPropertyContract); +// result.put("propertyOweCount",wxPropertyContractMapper.queryOweCount(propertyContract)); +// //押金欠缴 +// result.put("depositOweCount",wxBillPropertyDepositMapper.queryOweCount(propertyContract)); +// //押金状态 +// WxBillPropertyDeposit wxBillPropertyDeposit = new WxBillPropertyDeposit(); +// wxBillPropertyDeposit.setPropertyContractId(id); +// wxBillPropertyDeposit.updateTenantInfo(wxPropertyContract); +// List select = wxBillPropertyDepositMapper.findList(wxBillPropertyDeposit); +// if (!select.isEmpty()) { +// result.put("depositStatus", select.get(0).getStatus()); +// } //关联的店铺 - WxRentContract wrc = wxRentContractMapper.selectById(wxPropertyContract.getRentContractId()); - if (wrc != null) { - WxShop record = new WxShop(); - if (null != wrc.shopIdsByRentInfo() && wrc.shopIdsByRentInfo().size()>0) { - record.setIds(wrc.shopIdsByRentInfo()); - record.updateTenantInfo(wxPropertyContract); - PageInfo> shopPageInfo = wxShopService.findListMap(record,1,10000); - List> list = shopPageInfo.getList(); - result.put("wxShops", list); - }else { - result.put("wxShops", Collections.EMPTY_LIST); - } - } + WxShop record = new WxShop(); + record.updateTenantInfo(wxPropertyContract); + if (wxPropertyContract.getCreateType().intValue() == EnumPropertyCreateType.BY_SHOP.getCode().intValue()) { + record.setIds(wxPropertyContract.shopIdsByShop()); + }else { + WxRentContract wrc = wxRentContractMapper.selectById(wxPropertyContract.getRentContractId()); + if (wrc != null) { + if (null != wrc.shopIdsByRentInfo() && wrc.shopIdsByRentInfo().size()>0) { + record.setIds(wrc.shopIdsByRentInfo()); + } + } + } + if (null == record.getIds() || record.getIds().size() <= 0 ) { + result.put("wxShops", Collections.EMPTY_LIST); + }else { + PageInfo> shopPageInfo = wxShopService.findListMap(record,1,10000); + List> list = shopPageInfo.getList(); + result.put("wxShops", list); + } //发起人备注 WxFlowRecord wxFlowRecord = new WxFlowRecord(); @@ -304,16 +310,28 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService // if (record.getRentShopType().equals(EnumRentShopType.POINT.getCode()) && null == record.getShopId()) { // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "shopId不能为空"); // } - - WxRentContract wxRentContract = wxRentContractMapper.selectById(record.getRentContractId()); - if (wxRentContract != null) { - if (wxRentContract.getStatus().equals(EnumRentContractStatus.OUT_DATE.getCode()) || - wxRentContract.getStatus().equals(EnumRentContractStatus.TERMINATE.getCode()) || - wxRentContract.getStatus().equals(EnumRentContractStatus.INVALID.getCode())) { - return new ResultData(ErrorCode.RENT_CONTRACT_IS_TERMINATED); + WxRentContract wxRentContract = null; + if (record.getCreateType().intValue() == EnumPropertyCreateType.BY_RENT.getCode().intValue()) { + wxRentContract = wxRentContractMapper.selectById(record.getRentContractId()); + if (wxRentContract != null) { + if (wxRentContract.getStatus().equals(EnumRentContractStatus.OUT_DATE.getCode()) || + wxRentContract.getStatus().equals(EnumRentContractStatus.TERMINATE.getCode()) || + wxRentContract.getStatus().equals(EnumRentContractStatus.INVALID.getCode())) { + return new ResultData(ErrorCode.RENT_CONTRACT_IS_TERMINATED); + } + } else { + return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); + } + }else { + if (null == record.getRentalStartDate()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "起租开始时间不能为空"); + } + if (null == record.getRentalEndDate()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "起租结束时间不能为空"); + } + if (null == record.getStartDate()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "计租日不能为空"); } - } else { - return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); } if (null == record.getMerchantId() && record.getOperationType().equals(EnumContractOperationType.PART.getCode())) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空"); @@ -336,50 +354,25 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if (null == record.getDeposit()) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "押金不能为空"); } -// if (record.getPrice().longValue() <= 0) { -// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "物业费要大于0"); -// } - -// WxPropertyContract propertyContract = new WxPropertyContract(); -// propertyContract.updateTenantInfo(wxRentContract); -// propertyContract.setRentContractId(record.getRentContractId()); -// long count = wxPropertyContractMapper.findList(propertyContract) -//// .stream().filter(p -> p.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) || -//// p.getStatus().equals(EnumRentContractStatus.RENT_PAID.getCode()) || -//// p.getStatus().equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count(); -// .stream().filter(p -> p.getStatus().equals(EnumRentContractStatus.READY_FOR_PAING.getCode()) || -// p.getStatus().equals(EnumRentContractStatus.PAING.getCode())).count(); -// if (count > 1) { -// return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND); -// } //保存物业合同信息 String message; boolean hasFlow = true; if (record.getId() == null) { -// if (record.getOperationType().equals(EnumContractOperationType.WHOLE.getCode())) { -// WxPropertyContract propertyContractQuery = new WxPropertyContract(); -// propertyContractQuery.setRentContractId(record.getRentContractId()); -// int propertyContractCount = wxPropertyContractMapper.selectCount(new QueryWrapper(propertyContractQuery)); -// if (propertyContractCount > 0) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"租金合同编号["+record.getRentContractId()+"]存在关联的物业合同"); -// } -// } hasFlow = false; final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); - record.setRentalStartDate(wxRentContract.getRentalStartDate()); - record.setRentalEndDate(wxRentContract.getRentalEndDate()); - record.setStartDate(wxRentContract.getStartDate()); - record.setEndDate(wxRentContract.getEndDate()); + if (record.getCreateType().intValue() == EnumPropertyCreateType.BY_RENT.getCode().intValue()) { + record.setRentalStartDate(wxRentContract.getRentalStartDate()); + record.setRentalEndDate(wxRentContract.getRentalEndDate()); + record.setStartDate(wxRentContract.getStartDate()); + record.setEndDate(wxRentContract.getEndDate()); + }else { + record.setEndDate(setEndDate(record.getStartDate(),record.getRentalStartDate())); + } + Date date = new Date(); record.setCreatetime(date); record.setUpdatetime(date); -// record.setStatus(EnumRentContractStatus.DRAFT.getCode()); -// if (record.getOperationType().equals(EnumContractOperationType.WHOLE.getCode())) { -// record.setStatus(EnumRentContractStatus.INTENTION.getCode()); -// } else { -// record.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); -// } record.setStatus(EnumRentContractStatus.UNWRITE.getCode()); record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); try { @@ -401,7 +394,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService wxBillRent.setPropertyContractId(record.getId()); wxBillRent.setSortColumns(BaseEntity.SortField.Period_ASC); wxBillRent.setIsPreview(EnumIsPreview.YES.getCode()); - wxBillRent.updateTenantInfo(wxRentContract); + wxBillRent.updateTenantInfo(record); List billList = wxBillPropertyMapper.findList(wxBillRent); record.setPreviewBillRentList(billList); @@ -420,11 +413,16 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if (wxPropertyContract == null) { return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND); } - - record.setRentalStartDate(wxRentContract.getRentalStartDate()); - record.setRentalEndDate(wxRentContract.getRentalEndDate()); - record.setStartDate(wxRentContract.getStartDate()); - record.setEndDate(wxRentContract.getEndDate()); + if (record.getCreateType().intValue() == EnumPropertyCreateType.BY_RENT.getCode().intValue()) { + record.setRentalStartDate(wxRentContract.getRentalStartDate()); + record.setRentalEndDate(wxRentContract.getRentalEndDate()); + record.setStartDate(wxRentContract.getStartDate()); + record.setEndDate(wxRentContract.getEndDate()); + }else { + record.setEndDate(setEndDate(record.getStartDate(),record.getRentalStartDate())); + } + + record.setPrice(StringUtils.isNotBlank(record.getPrice()) ? record.getPrice() : "0"); record.setDeposit(StringUtils.isNotBlank(record.getDeposit()) ? record.getDeposit() : "0"); record.setUpdatetime(new Date()); @@ -435,14 +433,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService }else { record.setStatus(wxPropertyContract.getStatus()); } -// if (record.getOperationType().equals(EnumContractOperationType.WHOLE.getCode())) { -// record.setStatus(EnumRentContractStatus.INTENTION.getCode()); -// } - -// if (CollectionUtils.isEmpty(record.getFlowParams())) { -// hasFlow = false; -// record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); -// } record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); try { wxPropertyContractMapper.updateById(record); @@ -456,6 +446,19 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService return new ResultData(Result.SUCCESS, message, record); } + + //跟租金合同保持逻辑一致 + private Date setEndDate(Date startDate, Date rentalStartDate) { + //计租结束时间 + if (!startDate.equals(rentalStartDate)) { + Calendar instance = Calendar.getInstance(); + instance.setTime(rentalStartDate); + instance.add(Calendar.DAY_OF_MONTH, -1); + return instance.getTime(); + } else { + return startDate; + } + } @Override public ResultData updatePropertyContractStatus(Long id) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index a7c98c6ee..b056cd01f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -256,21 +256,20 @@ public class WxRentContractServiceImpl implements WxRentContractService { //租赁费用欠缴 result.put("rentOweCount",wxRentContractMapper.queryOweCount(wxRentContract)); //物业费用欠缴 - WxPropertyContract propertyContract = new WxPropertyContract(); - propertyContract.setRentContractId(id); - result.put("propertyOweCount",wxPropertyContractMapper.queryOweCount(propertyContract)); - result.put("protertyContract", wxPropertyContractMapper.findOneByRentId(wxRentContract)); - //押金欠缴 - ; - result.put("depositOweCount",wxBillDepositMapper.queryOweCount(wxRentContract)); - //押金状态 - WxBillDeposit wxBillDeposit = new WxBillDeposit(); - wxBillDeposit.setRentContractId(id); - wxBillDeposit.updateTenantInfo(wxRentContract); - List select = wxBillDepositMapper.findList(wxBillDeposit); - if (!select.isEmpty()) { - result.put("depositStatus", select.get(0).getStatus()); - } +// WxPropertyContract propertyContract = new WxPropertyContract(); +// propertyContract.setRentContractId(id); +// result.put("propertyOweCount",wxPropertyContractMapper.queryOweCount(propertyContract)); +// result.put("protertyContract", wxPropertyContractMapper.findOneByRentId(wxRentContract)); +// //押金欠缴 +// result.put("depositOweCount",wxBillDepositMapper.queryOweCount(wxRentContract)); +// //押金状态 +// WxBillDeposit wxBillDeposit = new WxBillDeposit(); +// wxBillDeposit.setRentContractId(id); +// wxBillDeposit.updateTenantInfo(wxRentContract); +// List select = wxBillDepositMapper.findList(wxBillDeposit); +// if (!select.isEmpty()) { +// result.put("depositStatus", select.get(0).getStatus()); +// } //发起人备注 WxFlowRecord wxFlowRecord = new WxFlowRecord(); wxFlowRecord.setBusinessId(String.valueOf(id)); @@ -438,7 +437,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { instance.setTime(record.getRentalStartDate()); instance.add(dayType, record.getLease()); instance.add(Calendar.DAY_OF_MONTH, -1); - //起租结束时间 + //计租结束时间 if (!record.getStartDate().equals(record.getRentalStartDate())) { instance.clear(); instance.setTime(record.getRentalStartDate()); diff --git a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml index 0446c72c3..a2b2bc239 100644 --- a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml @@ -55,10 +55,14 @@ + + + + - `id`,`merchant_id`,`decimal_size`,`price`,`rental_start_date`,`rental_end_date`, + `id`,`merchant_id`,`decimal_size`,`price`,`rental_start_date`,`rental_end_date`,`create_type`,`shop_ids`,`shop_numbers`, `sign_date`,`receive_period`,`tenant_id`,`parent_tenant_id`,`filepath`,`status`,`contract_number`, `deposit`,`pay_date`,`is_del`,`merchant_name`,`brand`,`business_id`,`receive_period_unit`, `shop_type`,`updatetime`,`createtime`,`rent_area`,`rent_shop_type`, @@ -108,7 +112,7 @@ and `end_date` = #{endDate} and `rent_shop_type` = #{rentShopType} and `operation_type` = #{operationType} - + and `create_type` = #{createType} and business_id in (${businessForRule}) @@ -119,6 +123,13 @@ + + and + + shop_ids like concat('%,', #{shopidItem},',%') + + + and id in