From 2a375fc75fc414a43d481ed8cab49cf9718f3f99 Mon Sep 17 00:00:00 2001 From: winter <664946893@qq.com> Date: Fri, 20 Dec 2024 17:50:04 +0800 Subject: [PATCH] fix --- .../contract/WxAgileContractController.java | 30 ++++ .../contract/WxContractBaseController.java | 159 +++++++++++------- .../domain/po/WxPropertyContract.java | 21 --- .../iformall/domain/po/WxRentContract.java | 25 +-- .../java/com/iformall/domain/po/WxShop.java | 2 +- .../iformall/domain/vo/ShopValidAreaVo.java | 14 ++ .../com/iformall/service/WxShopService.java | 2 - .../service/impl/WxShopServiceImpl.java | 14 -- 8 files changed, 148 insertions(+), 119 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/ShopValidAreaVo.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxAgileContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxAgileContractController.java index 15e677232..be54e7327 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxAgileContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxAgileContractController.java @@ -11,6 +11,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.vo.ShopValidAreaVo; import com.iformall.domain.vo.WxRentContractYearsVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; @@ -103,6 +104,35 @@ public class WxAgileContractController extends WxContractBaseController { return new ResultData(page); } + + /** + * 计算店铺有效面积 + * @param wxRentContract + * @return + */ + @PostMapping("getShopValidArea") + public ResultData getShopValidArea(@RequestBody WxRentContract wxRentContract) { + MallUserInfo user = getUser(); + wxRentContract.updateTenantInfo(user); + if (null == wxRentContract.getRentalStartDate() || null == wxRentContract.getRentalEndDate() ) { + return new ResultData(Result.ERROR,"请选择合同开始日期和结束日期"); + } + + if (null == wxRentContract.getCalcuteShopIds() || wxRentContract.getCalcuteShopIds().size() <= 0 ) { + return new ResultData(Result.ERROR,"请选择店铺"); + } + Map map = null; + if (null != wxRentContract.getCalcuteIsProperty() + && EnumYesOrNo.YES.getCode().intValue() == wxRentContract.getCalcuteIsProperty().intValue()) { + map = this.calcuteShopValidArea(wxRentContract, wxRentContract.getId(), wxRentContract.getRentalStartDate(), wxRentContract.getRentalEndDate(), + wxRentContract.getCalcuteShopIds(), null, false); + }else { + map = this.calcuteShopValidArea(wxRentContract, wxRentContract.getId(), wxRentContract.getRentalStartDate(), wxRentContract.getRentalEndDate(), + wxRentContract.getCalcuteShopIds(), null, true); + } + return new ResultData(map); + } + /** * 新增/修改第一步 * @param wxRentContract diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java index 158c5b024..781ae0034 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java @@ -7,7 +7,9 @@ import com.iformall.domain.po.WxFlowModel; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPropertyContract; import com.iformall.domain.po.WxRentContract; +import com.iformall.domain.po.WxShop; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.ShopValidAreaVo; import com.iformall.domain.vo.WxRentPropertyContractVo; import com.iformall.enums.EnumContractOperationType; import com.iformall.enums.EnumFlowContractType; @@ -22,6 +24,7 @@ import com.iformall.service.WxPropertyContractService; import com.iformall.service.WxRentContractService; import com.iformall.service.WxShopService; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; @@ -31,6 +34,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -148,79 +152,114 @@ public class WxContractBaseController extends BaseController{ } } - - private void contractValidShop(TenantEntity tenantEntity,Long contractId,Date contractStartDate,Date contractEndDate, - List rentShopIdList,Map rentAreaMap,Map shopNumberMap,boolean isRent) throws Exception { + protected Map calcuteShopValidArea(TenantEntity tenantEntity,Long contractId,Date contractStartDate,Date contractEndDate, + List shopIdList,Map rentAreaMap,boolean isRent) { //判断店铺是否还有有效的面积 - for (int i = 0 ; i < rentShopIdList.size(); i++) { - Long shopId = rentShopIdList.get(i); + Map shopValidAreaMap = new HashMap(); + for (int i = 0 ; i < shopIdList.size(); i++) { + Long shopId = shopIdList.get(i); - BigDecimal shopRentArea = rentAreaMap.get(shopId); - String shopNumber = shopNumberMap.get(shopId); - if (shopRentArea.compareTo(new BigDecimal(0)) <= 0 ) { - throw new MallinkException(Result.ERROR, "房间["+shopNumber+"]面积不足。"); + BigDecimal shopArea = new BigDecimal(0); + WxShop shop = wxShopService.getById(shopId); + if (StringUtils.isNotBlank(shop.getOperationArea())){ + shopArea = new BigDecimal(shop.getOperationArea()); } + + ShopValidAreaVo vo = new ShopValidAreaVo(); + vo.setShopNumber(shop.getShopNumber()); + ; - List sidlist = new ArrayList(); - sidlist.add(shopId); - List contractIds = wxAgileContractService.findShopContractIds(tenantEntity, sidlist); - //查询是否有跟当前合同时间有冲突的合同 - if (null != contractIds) { - if (null != contractId) { - contractIds.remove(contractId); - } - if (contractIds.size() > 0) { - List usedContractIds = null; - List statusList = new ArrayList(); - statusList.add(EnumRentContractStatus.DRAFT.getCode()); - statusList.add(EnumRentContractStatus.PAING.getCode()); - statusList.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); - statusList.add(EnumRentContractStatus.PERFORMANCE.getCode()); - statusList.add(EnumRentContractStatus.UNWRITE.getCode()); - if (isRent) { - WxRentContract rc = new WxRentContract(); - rc.updateTenantInfo(tenantEntity); - rc.setIds(contractIds); - rc.setStatuss(statusList); - /**满足下面条件的都算 - * 1. 合同开始日期<=当前合同开始日期 && 合同结束日期 > 当前合同开始日期 - * 2. 合同开始日期 >= 当前合同开始日期 && 合同开始日期 <= 当前结束日期 - */ - rc.setUseStartTime(contractStartDate); - rc.setUseEndTime(contractEndDate); - usedContractIds = wxRentContractService.findIdList(rc); - }else { - WxPropertyContract rc = new WxPropertyContract(); - rc.updateTenantInfo(tenantEntity); - rc.setIds(contractIds); - rc.setStatuss(statusList); - rc.setUseStartTime(contractStartDate); - rc.setUseEndTime(contractEndDate); - usedContractIds = wxPropertyContractService.findIdList(rc); - } - if (null != usedContractIds && usedContractIds.size() > 0 ) { - BigDecimal usedArea = wxAgileContractService.sumShopContractAreas(tenantEntity, shopId,usedContractIds); - BigDecimal totalUsedArea = usedArea.add(shopRentArea); - BigDecimal remianArea = wxShopService.calcuteUsedShopArea(tenantEntity, shopId, totalUsedArea); - if (remianArea.compareTo(new BigDecimal(0)) < 0 ) { - throw new MallinkException(Result.ERROR, "房间["+shopNumber+"]面积不足。"); - } - } - } - - } - + if (shopArea.compareTo(new BigDecimal(0)) <= 0 ) { + vo.setValidArea(new BigDecimal(0)); + }else { + BigDecimal contractShopArea = new BigDecimal(0); + if (null != rentAreaMap) { + contractShopArea = rentAreaMap.get(shopId); + if (null == contractShopArea) { + contractShopArea = new BigDecimal(0); + } + } + + List sidlist = new ArrayList(); + sidlist.add(shopId); + List contractIds = wxAgileContractService.findShopContractIds(tenantEntity, sidlist); + //查询是否有跟当前合同时间有冲突的合同 + if (null != contractIds) { + if (null != contractId) { + contractIds.remove(contractId); + } + if (contractIds.size() > 0) { + List usedContractIds = null; + List statusList = new ArrayList(); + statusList.add(EnumRentContractStatus.DRAFT.getCode()); + statusList.add(EnumRentContractStatus.PAING.getCode()); + statusList.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); + statusList.add(EnumRentContractStatus.PERFORMANCE.getCode()); + statusList.add(EnumRentContractStatus.UNWRITE.getCode()); + if (isRent) { + WxRentContract rc = new WxRentContract(); + rc.updateTenantInfo(tenantEntity); + rc.setIds(contractIds); + rc.setStatuss(statusList); + /**满足下面条件的都算 + * 1. 合同开始日期<=当前合同开始日期 && 合同结束日期 > 当前合同开始日期 + * 2. 合同开始日期 >= 当前合同开始日期 && 合同开始日期 <= 当前结束日期 + */ + rc.setUseStartTime(contractStartDate); + rc.setUseEndTime(contractEndDate); + usedContractIds = wxRentContractService.findIdList(rc); + }else { + WxPropertyContract rc = new WxPropertyContract(); + rc.updateTenantInfo(tenantEntity); + rc.setIds(contractIds); + rc.setStatuss(statusList); + rc.setUseStartTime(contractStartDate); + rc.setUseEndTime(contractEndDate); + usedContractIds = wxPropertyContractService.findIdList(rc); + } + if (null != usedContractIds && usedContractIds.size() > 0 ) { + BigDecimal usedArea = wxAgileContractService.sumShopContractAreas(tenantEntity, shopId,usedContractIds); + BigDecimal totalUsedArea = usedArea.add(contractShopArea); + BigDecimal remianArea = wxShopService.calcuteUsedShopArea(tenantEntity, shopId, totalUsedArea); + if (remianArea.compareTo(new BigDecimal(0)) < 0 ) { + vo.setValidArea(new BigDecimal(0)); + }else { + vo.setValidArea(remianArea); + } + } + } + } + } + shopValidAreaMap.put(shopId, vo); + } + return shopValidAreaMap; + } + + private void contractValidShop(TenantEntity tenantEntity,Long contractId,Date contractStartDate,Date contractEndDate, + List rentShopIdList,Map rentAreaMap,boolean isRent) throws Exception { + //判断店铺是否还有有效的面积 + Map shopVliadAreaMap = calcuteShopValidArea(tenantEntity, contractId, contractStartDate, contractEndDate, rentShopIdList, rentAreaMap, isRent); + if (null != shopVliadAreaMap) { + for (Iterator it = shopVliadAreaMap.keySet().iterator(); it.hasNext();) { + Long shopId = it.next(); + ShopValidAreaVo vo = shopVliadAreaMap.get(shopId); + if ( null != vo && null != vo.getValidArea()) { + if (vo.getValidArea().compareTo(new BigDecimal(0)) <= 0 ) { + throw new MallinkException(Result.ERROR, "房间["+vo.getShopNumber()+"]面积不足。"); + } + } + } } } protected void rentContractValidShop(WxRentContract rentContract) throws Exception { contractValidShop(rentContract,rentContract.getId(),rentContract.getRentalStartDate(),rentContract.getRentalEndDate(),rentContract.shopIdsByRentInfo(), - rentContract.getRentShopArea(),rentContract.getRentInfoShopNumberMap(),true); + rentContract.getRentShopArea(),true); } protected void propertyContractValidShop(WxPropertyContract propertyContract) throws Exception { contractValidShop(propertyContract,propertyContract.getId(),propertyContract.getRentalStartDate(),propertyContract.getRentalEndDate(),propertyContract.shopIdsByShop(), - propertyContract.getRentShopArea(),propertyContract.getRentInfoShopNumberMap(),false); + propertyContract.getRentShopArea(),false); } } 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 9dff1bcf2..e062e8b98 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java @@ -339,27 +339,6 @@ public class WxPropertyContract extends TenantEntity { return sb.toString(); } - public Map getRentInfoShopNumberMap() { - String rentInfo = this.getRentInfo(); - if (!StringUtils.isBlank(rentInfo)) { - Map shopNumberMap = new HashMap(); - 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"); - Long shopId = rentInfoObject.getLong("id"); - if (StringUtils.isBlank(shopNumber)) { - shopNumberMap.put(shopId, ""); - }else { - shopNumberMap.put(shopId, shopNumber); - } - } - return shopNumberMap; - } - return null; - } - public List getFeesStardarsList() { if (StringUtils.isNotBlank(feesStandardsInfo)) { return JSON.parseArray(feesStandardsInfo, WxEnergyFees.class); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java index 01f772345..5015b8e0c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java @@ -427,27 +427,6 @@ public class WxRentContract extends TenantEntity { return sb.toString(); } - public Map getRentInfoShopNumberMap() { - String rentInfo = this.getRentInfo(); - if (!StringUtils.isBlank(rentInfo)) { - Map shopNumberMap = new HashMap(); - 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"); - Long shopId = rentInfoObject.getLong("id"); - if (StringUtils.isBlank(shopNumber)) { - shopNumberMap.put(shopId, ""); - }else { - shopNumberMap.put(shopId, shopNumber); - } - } - return shopNumberMap; - } - return null; - } - public String getRentInfoShopId() { StringBuffer sb = new StringBuffer(""); String rentInfo = this.getRentInfo(); @@ -608,5 +587,9 @@ public class WxRentContract extends TenantEntity { private Date useStartTime; @TableField(exist = false) private Date useEndTime; + @TableField(exist = false) + private List calcuteShopIds; + @TableField(exist = false) + private Integer calcuteIsProperty; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java b/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java index fb6afd71f..f09d9a2e1 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java @@ -249,5 +249,5 @@ public class WxShop extends TenantEntity { @TableField(exist = false) private String energyFeesIds; @TableField(exist = false) - private Integer calcuteContractUsedArea; + private Integer usedContractArea; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/ShopValidAreaVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/ShopValidAreaVo.java new file mode 100644 index 000000000..719acd8fb --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/ShopValidAreaVo.java @@ -0,0 +1,14 @@ +package com.iformall.domain.vo; + +import lombok.Data; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class ShopValidAreaVo implements Serializable{ + + private static final long serialVersionUID = 4494858079134918638L; + //核销金额记录 + private BigDecimal validArea; + private String shopNumber; +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxShopService.java b/mallinkService/src/main/java/com/iformall/service/WxShopService.java index ba409c2a1..e9276d121 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxShopService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxShopService.java @@ -163,6 +163,4 @@ public interface WxShopService { List getFloorBuildShopIds(TenantEntity tenantEntity,String floorRule,Long building,Long floor,Integer shopDel ,String shopNumber) ; - BigDecimal calcuteUsedShopArea(TenantEntity tenantEntity,Long shopId,BigDecimal contractUsedArea); - } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java index 680922240..92b4b08f2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java @@ -1239,18 +1239,4 @@ public class WxShopServiceImpl implements WxShopService { return shopIds; } - @Override - public BigDecimal calcuteUsedShopArea(TenantEntity tenantEntity, Long shopId, BigDecimal contractUsedArea) { - WxShop shop = this.getById(shopId); - if (StringUtils.isBlank(shop.getOperationArea())){ - return new BigDecimal(0); - }else { - BigDecimal shopArea = new BigDecimal(shop.getOperationArea()); - if (null == contractUsedArea) { - return shopArea; - }else { - return shopArea.subtract(contractUsedArea); - } - } - } }