From dea3719f30249ee52646f8a0767731be3599fb36 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 18 Aug 2020 13:33:53 +0800 Subject: [PATCH] fix contract --- .../contract/WxRentContractController.java | 230 ++++++++++-------- .../domain/po/WxPropertyContract.java | 7 +- .../mapper/WxPropertyContractMapper.java | 4 + .../iformall/mapper/WxRentContractMapper.java | 2 + .../service/WxRentContractService.java | 6 +- .../service/impl/WxFlowServiceImpl.java | 6 +- .../impl/WxPropertyContractServiceImpl.java | 40 +-- .../impl/WxRentContractServiceImpl.java | 129 +++++----- .../mapper/WxPropertyContractMapper.xml | 11 + .../resources/mapper/WxRentContractMapper.xml | 5 + 10 files changed, 253 insertions(+), 187 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java index 870d2cf69..b394a7e5a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -188,22 +188,7 @@ public class WxRentContractController extends WxContractBaseController { return new ResultData(e.getErrorCode(), e.getMessage()); } } - - @GetMapping("/hasRentStatus") - @SystemControllerLog(description = "查询店铺租赁状态") - public ResultData hasRentStatus(@ModelAttribute WxRentContract wxRentContract) { - logger.debug("[" + getIpAddr() + "] WxRentContractController::hasRentStatus"); - wxRentContract.updateTenantInfo(getTenantInfo()); - return wxRentContractService.hasRentStatus(wxRentContract); - } - - @GetMapping("/hasContractNumber") - @SystemControllerLog(description = "租赁合同-检查合同编号是否存在") - public ResultData hasContractNumber(@ModelAttribute WxRentContract wxRentContract) { - logger.debug("[" + getIpAddr() + "] WxRentContractController::hasContractNumber"); - wxRentContract.updateTenantInfo(getTenantInfo()); - return wxRentContractService.hasContractNumber(wxRentContract); - } + @PostMapping("update") @SystemControllerLog(description = "租赁合同-更新") @@ -241,16 +226,12 @@ public class WxRentContractController extends WxContractBaseController { } } - @GetMapping("/endRentContract") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true), - @ApiImplicitParam(name = "status", value = "status", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "租赁合同-终结合同") - public ResultData endRentContract(Long id,Integer status) { - logger.debug("[" + getIpAddr() + "] WxRentContractController::endRentContract"); - return wxRentContractService.endRentContract(id,status); - } - + /** + * 查询商户可用商铺 + * @param merchantId + * @param contractId + * @return + */ @GetMapping("/merchantShops") @ApiImplicitParams({ @ApiImplicitParam(name = "merchantId", value = "merchantId", dataType = "Long", paramType = "query", required = true), @@ -311,25 +292,7 @@ public class WxRentContractController extends WxContractBaseController { } return new ResultData(shops); - } - - @GetMapping("getRentContractList") - @ApiImplicitParams({ - @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), - @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "租赁合同-列表") - public ResultData getRentContractList(@ModelAttribute WxRentContract wxRentContract, Integer validStatus, Integer pageNum, Integer pageSize) { - logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList"); - if (null == wxRentContract) wxRentContract = new WxRentContract(); - wxRentContract.updateTenantInfo(getTenantInfo()); - if (1 == validStatus) { - List statuss = new ArrayList(); - statuss.add(EnumRentContractStatus.PAING.getCode()); - statuss.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); - wxRentContract.setStatuss(statuss); - } - return new ResultData(wxRentContractService.getRentContractList(wxRentContract, pageNum, pageSize)); - } + } /** * 一个商户只能存在一个续签合同。如果有计租中的,则取计租中最新的一条,如果没有计租中的,则取正常到期最近的一条 @@ -364,9 +327,129 @@ public class WxRentContractController extends WxContractBaseController { } } return new ResultData(); + } + + /** + * 作废 + * @param wxRentContract + * @return + */ + @GetMapping("/unvalid") + @SystemControllerLog(description = "作废合同") + public ResultData unvalid(@ModelAttribute WxRentContract wxRentContract) { + //wxRentContract.updateTenantInfo(getTenantInfo()); + WxRentContract contract = wxRentContractService.getSimpleDeatil(wxRentContract.getId()); + if (null == contract) { + return new ResultData(Result.ERROR, "合同不存在."); + } + if (contract.getStatus().intValue() == EnumRentContractStatus.DRAFT.getCode().intValue() || + (contract.getStatus().intValue() == EnumRentContractStatus.PERFORMANCE.getCode().intValue() + && contract.getApplyStatus().intValue() == EnumRentContractAppStatus.REJECT.getCode().intValue())) { + contract.setStatus(EnumRentContractStatus.INVALID.getCode()); + contract.setUpdatetime(new Date()); + return wxRentContractService.updateRentContract(contract); + }else { + return new ResultData(Result.ERROR, "合同状态不允许作废.只能作废草稿或者履约拒绝的合同。"); + } + } + + /** + * 终止 + * @param id + * @param status + * @return + */ + @PostMapping("endContract") + @SystemControllerLog(description = "租赁合同-终止合同") + public ResultData endContract(@RequestBody WxRentContract wxRentContract) { + logger.debug("[" + getIpAddr() + "] WxRentContractController::endContract"); + wxRentContract.updateTenantInfo(getTenantInfo()); + wxRentContractService.endContract(wxRentContract); + return new ResultData(); } + @RequestMapping("/download") + public void download(HttpServletRequest request, HttpServletResponse response){ + logger.debug("[" + getIpAddr() + "] WxRentContractController::download"); + wxRentContractService.download(request,response); + } + + @GetMapping("getDateDiff") + @ApiImplicitParams({ + @ApiImplicitParam(name = "startDate", value = "开始时间", dataType = "string", paramType = "query", required = true), + @ApiImplicitParam(name = "endtDate", value = "结束时间", dataType = "string", paramType = "query", required = true)}) + @SystemControllerLog(description = "获取两个时间相差,返回n月零n天") + public ResultData getDateDiff(String startDate, String endDate) throws Exception{ + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); + Map map = new HashMap<>(); + int[] array = DateUtils.getDiff(sd.parse(startDate),sd.parse(endDate)); + map.put("month",array[0]); + map.put("day",array[1]); + return new ResultData(map); + } + + @GetMapping("exportContract") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)}) + @SystemControllerLog(description = "租赁合同-导出合同") + public void exportContract(Long id,HttpServletRequest request, HttpServletResponse response){ + wxRentContractService.exportContract(request,response,id); + } + + @GetMapping("getRentContractList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + @SystemControllerLog(description = "租赁合同-列表") + public ResultData getRentContractList(@ModelAttribute WxRentContract wxRentContract, Integer validStatus, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList"); + if (null == wxRentContract) wxRentContract = new WxRentContract(); + wxRentContract.updateTenantInfo(getTenantInfo()); + if (1 == validStatus) { + List statuss = new ArrayList(); + statuss.add(EnumRentContractStatus.PAING.getCode()); + statuss.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); + wxRentContract.setStatuss(statuss); + } + return new ResultData(wxRentContractService.getRentContractList(wxRentContract, pageNum, pageSize)); + } + + + + + + + + + + + +// @GetMapping("/del") +// @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true) +// @SystemControllerLog(description = "租赁合同-删除") +// public ResultData delete(String id) { +// logger.debug("[" + getIpAddr() + "] WxRentContractController::delete"); +// return wxRentContractService.deleteById(id); +// } + + + @GetMapping("/hasRentStatus") + @SystemControllerLog(description = "查询店铺租赁状态") + public ResultData hasRentStatus(@ModelAttribute WxRentContract wxRentContract) { + logger.debug("[" + getIpAddr() + "] WxRentContractController::hasRentStatus"); + wxRentContract.updateTenantInfo(getTenantInfo()); + return wxRentContractService.hasRentStatus(wxRentContract); + } + + @GetMapping("/hasContractNumber") + @SystemControllerLog(description = "租赁合同-检查合同编号是否存在") + public ResultData hasContractNumber(@ModelAttribute WxRentContract wxRentContract) { + logger.debug("[" + getIpAddr() + "] WxRentContractController::hasContractNumber"); + wxRentContract.updateTenantInfo(getTenantInfo()); + return wxRentContractService.hasContractNumber(wxRentContract); + } + @GetMapping("getMerchantList") @SystemControllerLog(description = "获取商户列表") @ApiImplicitParams({ @@ -396,20 +479,6 @@ public class WxRentContractController extends WxContractBaseController { return new ResultData(); } - @GetMapping("getDateDiff") - @ApiImplicitParams({ - @ApiImplicitParam(name = "startDate", value = "开始时间", dataType = "string", paramType = "query", required = true), - @ApiImplicitParam(name = "endtDate", value = "结束时间", dataType = "string", paramType = "query", required = true)}) - @SystemControllerLog(description = "获取两个时间相差,返回n月零n天") - public ResultData getDateDiff(String startDate, String endDate) throws Exception{ - SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); - Map map = new HashMap<>(); - int[] array = DateUtils.getDiff(sd.parse(startDate),sd.parse(endDate)); - map.put("month",array[0]); - map.put("day",array[1]); - return new ResultData(map); - } - /** * 预览账单展示,编辑账期,后端生成账单金额 * @param wxRentContract @@ -450,21 +519,7 @@ public class WxRentContractController extends WxContractBaseController { } - @GetMapping("/del") - @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true) - @SystemControllerLog(description = "租赁合同-删除") - public ResultData delete(String id) { - logger.debug("[" + getIpAddr() + "] WxRentContractController::delete"); - return wxRentContractService.deleteById(id); - } - - - @RequestMapping("/download") - public void download(HttpServletRequest request, HttpServletResponse response){ - logger.debug("[" + getIpAddr() + "] WxRentContractController::download"); - wxRentContractService.download(request,response); - } // @GetMapping("/getRentContractStatusInfo") // @SystemControllerLog(description = "租赁合同-获取合同状态信息") @@ -476,21 +531,13 @@ public class WxRentContractController extends WxContractBaseController { - @PostMapping("updateMerchant") - @SystemControllerLog(description = "租赁合同-更新商户") - public ResultData updateMerchant(@RequestBody WxRentContract wxRentContract) { - logger.debug("[" + getIpAddr() + "] WxRentContractController::updateMerchant"); - return wxRentContractService.updateMerchant(wxRentContract); - } - +// @PostMapping("updateMerchant") +// @SystemControllerLog(description = "租赁合同-更新商户") +// public ResultData updateMerchant(@RequestBody WxRentContract wxRentContract) { +// logger.debug("[" + getIpAddr() + "] WxRentContractController::updateMerchant"); +// return wxRentContractService.updateMerchant(wxRentContract); +// } - @GetMapping("exportContract") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)}) - @SystemControllerLog(description = "租赁合同-导出合同") - public void exportContract(Long id,HttpServletRequest request, HttpServletResponse response){ - wxRentContractService.exportContract(request,response,id); - } @PostMapping("updateRentContractStatus") @SystemControllerLog(description = "租赁合同-更新合同状态") @@ -547,15 +594,6 @@ public class WxRentContractController extends WxContractBaseController { } - @PostMapping("endContract") - @SystemControllerLog(description = "租赁合同-终止合同") - public ResultData endContract(@RequestBody WxRentContract wxRentContract) { - logger.debug("[" + getIpAddr() + "] WxRentContractController::endContract"); - wxRentContract.updateTenantInfo(getTenantInfo()); - wxRentContractService.endContract(wxRentContract); - return new ResultData(); - } - @GetMapping("/getContractByContractNumber") @SystemControllerLog(description = "租赁合同-通过合同编号查询信息") public ResultData getContractByContractNumber(@ModelAttribute WxRentContract wxRentContract) { 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 cfaf9b636..c90a3968e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java @@ -62,7 +62,9 @@ public class WxPropertyContract extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="合同进度状态1待签约2已签约未记租3计租中4提前终止5合同到期",name="status") private Integer status; - + @TableField(exist = false) + private List statuss; + @io.swagger.annotations.ApiModelProperty(value="合同编号",name="contractNumber") private String contractNumber; @@ -87,9 +89,6 @@ public class WxPropertyContract extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="店铺类型:1直营店2加盟店3个体店4旗舰店",name="shopType") private Integer shopType; - @io.swagger.annotations.ApiModelProperty(value="商铺ID",name="shopId") - private Long shopId; - @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") private Date updatetime; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxPropertyContractMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxPropertyContractMapper.java index 7071ad175..c971b56b4 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxPropertyContractMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxPropertyContractMapper.java @@ -9,6 +9,8 @@ import com.iformall.domain.po.WxRentContract; import java.util.List; import java.util.Map; +import org.apache.ibatis.annotations.Param; + /** * @author gongbiao */ @@ -53,4 +55,6 @@ public interface WxPropertyContractMapper extends CommonMapper List getAllContractBymerchantId(WxRentContract wxRentContract); List getContractByMerchant(WxRentContract wxRentContract); + + Integer getCanApplyCount(@Param("id") Long id); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java b/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java index c88adbec0..3410ac32e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java @@ -60,9 +60,7 @@ public interface WxRentContractService { //Object getRentContractStatusInfo(WxRentContract record); - ResultData endRentContract(Long id, Integer status); - - ResultData updateMerchant(WxRentContract wxRentContract); + ResultData updateRentContract(WxRentContract wxRentContract); PageInfo getRentContractList(WxRentContract rentContract, Integer pageNum, Integer pageSize); @@ -90,7 +88,7 @@ public interface WxRentContractService { //Integer getShopType(WxRentContract wxRentContract); - void endContract(WxRentContract wxRentContract); + ResultData endContract(WxRentContract wxRentContract); void updatePropertyPreviewBill(WxRentContract record); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java index 587855a21..697c2e876 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java @@ -186,6 +186,7 @@ public class WxFlowServiceImpl implements WxFlowService { rent.setBusinessType(flowType); WxRentContract record = wxRentContractMapper.selectById(businessId); + //合并的合同-审批时 物业合同的状态肯定不在 签约中 避免更新物业合同时提示店铺存在 if(record.getOperationType().equals(EnumContractOperationType.WHOLE.getCode())){ WxPropertyContract wxPropertyContract = new WxPropertyContract(); @@ -199,7 +200,10 @@ public class WxFlowServiceImpl implements WxFlowService { //如果是提交审批 , 审批驳回状态不变 if (EnumRentContractAppStatus.APPLYING.getCode().intValue() == applyStatus.intValue()) { - rent.setStatus(EnumRentContractStatus.PERFORMANCE.getCode()); + //如果合同的状态非正常,则不处理 + if (EnumRentContractStatus.DRAFT.getCode().intValue() == record.getStatus().intValue()) { + rent.setStatus(EnumRentContractStatus.PERFORMANCE.getCode()); + } //如果审批完成 }else if (EnumRentContractAppStatus.FINISH.getCode().intValue() == applyStatus.intValue()) { wxRentContractService.updateRentContractStatus(businessId); 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 ccd538a7a..0af3d1120 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -160,15 +160,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } else { result.put("wxMerchant", null); } - //关联的店铺 - if (wxPropertyContract.getShopId() != null) { - WxShop record = new WxShop(); - record.setId(wxPropertyContract.getShopId()); - List> list = wxShopMapper.findListMap(record); - result.put("wxShops", list); - } else { - result.put("wxShops", Collections.EMPTY_LIST); - } //租赁费用欠缴 WxRentContract wxRentContract = new WxRentContract(); @@ -187,6 +178,19 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if (!select.isEmpty()) { result.put("depositStatus", select.get(0).getStatus()); } + + //关联的店铺 + if (wxRentContract != null) { + WxShop record = new WxShop(); + if (null != wxRentContract.shopIdsByRentInfo() && wxRentContract.shopIdsByRentInfo().size()>0) { + record.setIds(wxRentContract.shopIdsByRentInfo()); + List> list = wxShopMapper.findListMap(record); + result.put("wxShops", list); + }else { + result.put("wxShops", Collections.EMPTY_LIST); + } + } + //发起人备注 WxFlowRecord wxFlowRecord = new WxFlowRecord(); wxFlowRecord.setBusinessId(id); @@ -239,7 +243,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService bill.setLatePayRatio(0); bill.setPay(0L); bill.setIsDel(EnumDelStatus.NOT_DEL.getCode()); - bill.setShopId(record.getShopId()); + //bill.setShopId(record.getShopId()); bill.setExpiredDay(0L); setExpiredDay(bill,Calendar.MONTH,record.getReceivePeriod()); if (bill.getReceivePay().equals(0L)) { @@ -264,9 +268,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService haspreview = true; } - if (record.getRentShopType().equals(EnumRentShopType.POINT.getCode()) && null == record.getShopId()) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "shopId不能为空"); - } +// 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) { @@ -489,7 +493,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService wxBillDeposit.updateTenantInfo(wxPropertyContract); wxBillDeposit.setIsDel(0); wxBillDeposit.setMerchantId(record.getMerchantId()); - wxBillDeposit.setShopId(wxPropertyContract.getShopId()); + //wxBillDeposit.setShopId(wxPropertyContract.getShopId()); wxBillDeposit.setCreatetime(date); wxBillDeposit.setUpdatetime(date); wxBillDeposit.setIsDel(EnumDelStatus.NOT_DEL.getCode()); @@ -688,7 +692,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService wxBillProperty.setIsDel(0); wxBillProperty.setMerchantId(wxPropertyContract.getMerchantId()); wxBillProperty.setUserId(userId); - wxBillProperty.setShopId(wxPropertyContract.getShopId()); + //wxBillProperty.setShopId(wxPropertyContract.getShopId()); wxBillProperty.setCreatetime(date); wxBillProperty.setUpdatetime(date); wxBillProperty.setIsDel(EnumDelStatus.NOT_DEL.getCode()); @@ -976,9 +980,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { wxPropertyContract.setMerchantId(wxRentContract.getMerchantId()); } - if (wxRentContract.shopIdsByRentInfo().size()==0) { - wxPropertyContract.setShopId(wxRentContract.shopIdsByRentInfo().get(0)); - } +// if (wxRentContract.shopIdsByRentInfo().size()==0) { +// wxPropertyContract.setShopId(wxRentContract.shopIdsByRentInfo().get(0)); +// } List select = wxPropertyContractMapper.selectList(new QueryWrapper(wxPropertyContract)); 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 dc45663ce..d8e886a5d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -1474,52 +1474,66 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Transactional(rollbackFor = {Exception.class}) @Override - public ResultData endRentContract(Long id, Integer status) { - - WxRentContract wxRentContract = wxRentContractMapper.selectById(id); - if (wxRentContract == null) { + public ResultData endContract(WxRentContract wxRentContract) { + + WxRentContract contract = wxRentContractMapper.selectById(wxRentContract.getId()); + if (contract == null) { return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); } - wxRentContract.setStatus(EnumRentContractStatus.TERMINATE.getCode()); - try { - wxRentContract.setUpdatetime(new Date()); - wxRentContractMapper.updateById(wxRentContract); - //不停用商户 - //wxMerchantService.disable(wxRentContract.getMerchantId()); - //物业合同终止 - if (status == 1) { - WxPropertyContract wxPropertyContract = new WxPropertyContract(); - wxRentContract.updateTenantInfo(wxRentContract); - wxPropertyContract.setRentContractId(id); - List> contractData = wxPropertyContractMapper.queryPropertyContractData(wxPropertyContract); - if (contractData.size() > 0) { - Map propertyContract = contractData.get(0); - Long propertyContractId = (Long) propertyContract.get("id"); - if (propertyContract != null && propertyContractId != null) { - WxPropertyContract propertyContractUpdate = wxPropertyContractMapper.selectById(propertyContractId); - propertyContractUpdate.setStatus(EnumRentContractStatus.TERMINATE.getCode()); - propertyContractUpdate.setUpdatetime(new Date()); - wxPropertyContractMapper.updateById(propertyContractUpdate); - } - } - } - } catch (MallinkException e) { - logger.info("终止合同失败:" + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + contract.setStatus(EnumRentContractStatus.TERMINATE.getCode()); + contract.setUpdatetime(new Date()); + wxRentContractMapper.updateById(contract); + + //终止租赁合同,同时终止物业合同 + if(EnumEndProperty.END_RENT_AND_PROPERTY.getCode().equals(wxRentContract.getEndProperty())){ +// WxPropertyContract wxPropertyContract = new WxPropertyContract(); +// wxPropertyContract.setRentContractId(wxRentContract.getId()); +// wxPropertyContract.setStatus(EnumRentContractStatus.TERMINATE.getCode()); +// wxPropertyContractMapper.updateStatusByRentContractId(wxPropertyContract); + WxPropertyContract wxPropertyContract = new WxPropertyContract(); + wxRentContract.updateTenantInfo(wxRentContract); + wxPropertyContract.setRentContractId(wxRentContract.getId()); + //终止有效的合同 + List validstatuss = new ArrayList(); + validstatuss.add(EnumRentContractStatus.PAING.getCode()); + validstatuss.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); + wxPropertyContract.setStatuss(validstatuss); + wxPropertyContract.setUpdatetime(new Date()); + wxPropertyContract.setStatus(EnumRentContractStatus.TERMINATE.getCode()); + wxPropertyContractMapper.endContract(wxRentContract); + //作废未生效的合同 + List unvalidstatuss = new ArrayList(); + unvalidstatuss.add(EnumRentContractStatus.DRAFT.getCode()); + unvalidstatuss.add(EnumRentContractStatus.PERFORMANCE.getCode()); + wxPropertyContract.setStatuss(unvalidstatuss); + wxPropertyContract.setStatus(EnumRentContractStatus.INVALID.getCode()); + wxPropertyContractMapper.endContract(wxRentContract); + + //物业账单失效 + wxBillPropertyMapper.updateInvalidStatusByRent(wxRentContract); } - return new ResultData(Result.SUCCESS, "操作成功"); + //租赁账单失效 + WxBillRent wxBillRent = new WxBillRent(); + wxBillRent.setRentContractId(wxRentContract.getId()); + wxBillRentMapper.updateInvalidStatus(wxBillRent); + return new ResultData(Result.SUCCESS,"终止成功"); + //解绑商户和商铺关系 +// WxRentContract rentContract = wxRentContractMapper.selectById(wxRentContract.getId()); +// if(rentContract != null && rentContract.getMerchantId() != null){ +// wxMerchantService.disable(rentContract.getMerchantId()); +// } } @Transactional(rollbackFor = {Exception.class}) @Override - public ResultData updateMerchant(WxRentContract wxRentContract) { - WxRentContract record = wxRentContractMapper.selectById(wxRentContract); - if (wxRentContract == null) { - return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); - } - record.setMerchantId(wxRentContract.getMerchantId()); + public ResultData updateRentContract(WxRentContract wxRentContract) { +// WxRentContract record = wxRentContractMapper.selectById(wxRentContract); +// if (wxRentContract == null) { +// return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); +// } +// record.setMerchantId(wxRentContract.getMerchantId()); try { - wxRentContractMapper.updateById(record); + wxRentContractMapper.updateById(wxRentContract); } catch (MallinkException e) { logger.info("关联合同商户失败:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); @@ -1625,6 +1639,13 @@ public class WxRentContractServiceImpl implements WxRentContractService { if (record == null) { return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); } + //如果合同状态为非正常状态,则不更新合同状态,并删除账单 + if(record.getStatus().intValue() == EnumRentContractStatus.INVALID.getCode().intValue() + || record.getStatus().intValue() == EnumRentContractStatus.TERMINATE.getCode().intValue()) { + return new ResultData(ErrorCode.RENT_CONTRACT_IS_TERMINATED.getCode(),"合同状态已作废或者已终止."); + } + + //更新合同状态为签约 WxRentContract wxRentContract = new WxRentContract(); wxRentContract.setId(id); @@ -2380,32 +2401,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { return list; } - @Override - public void endContract(WxRentContract wxRentContract) { - wxRentContract.setStatus(EnumRentContractStatus.TERMINATE.getCode()); - wxRentContractMapper.updateStatus(wxRentContract); - - //终止租赁合同,同时终止物业合同 - if(EnumEndProperty.END_RENT_AND_PROPERTY.getCode().equals(wxRentContract.getEndProperty())){ - WxPropertyContract wxPropertyContract = new WxPropertyContract(); - wxPropertyContract.setRentContractId(wxRentContract.getId()); - wxPropertyContract.setStatus(EnumRentContractStatus.TERMINATE.getCode()); - wxPropertyContractMapper.updateStatusByRentContractId(wxPropertyContract); - - //物业账单失效 - wxBillPropertyMapper.updateInvalidStatusByRent(wxRentContract); - } - //租赁账单失效 - WxBillRent wxBillRent = new WxBillRent(); - wxBillRent.setRentContractId(wxRentContract.getId()); - wxBillRentMapper.updateInvalidStatus(wxBillRent); - - //解绑商户和商铺关系 - WxRentContract rentContract = wxRentContractMapper.selectById(wxRentContract.getId()); - if(rentContract != null && rentContract.getMerchantId() != null){ - wxMerchantService.disable(rentContract.getMerchantId()); - } - } @Override public WxRentContract getByBill(WxBillRent billRent) { @@ -2457,6 +2452,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Override public ResultData apply(WxRentContract wxRentContract,MallUserInfo user) { + //如果存在其他的草稿状态或者履约驳回状态的合同,不允许提交审批 + Integer count = wxRentContractMapper.getCanApplyCount(wxRentContract.getId()); + if (null != count && count.intValue()>0) { + return new ResultData(Result.ERROR, "当前存在其他草稿状态或者履约驳回的合同。清作废再提交审批。"); + } + WxRentContract rentContract = wxRentContractMapper.selectById(wxRentContract.getId()); if (null == rentContract) { return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]未找到租金合同"); diff --git a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml index 836ce21ef..86779455a 100644 --- a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml @@ -386,4 +386,15 @@ select property_contract_id from wx_bill_property id = #{id} ) + + + update wx_property_contract set status=#{status},updatetime = #{updatetime} where rent_contract_id =#{rentContractId} + + and status in + + #{statusItem} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml index c35fbaed7..5486128e2 100644 --- a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml @@ -671,5 +671,10 @@ + + +