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 3cff0d3a3..464e57b7a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RestController; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxFlowModel; +import com.iformall.domain.po.WxPropertyContract; import com.iformall.domain.po.WxRentContract; import com.iformall.enums.EnumFlowContractType; import com.iformall.enums.EnumFlowKey; @@ -56,4 +57,19 @@ public class WxContractBaseController extends BaseController{ } return false; } + + protected boolean propertyContractHasWorkFlow(WxPropertyContract wxPropertyContract) { + WxFlowModel wxFlowModel = new WxFlowModel(); + if (wxPropertyContract.getRentShopType().intValue() == EnumRentShopType.SHOP.getCode().intValue()) { + wxFlowModel.setFlowType(EnumFlowContractType.PROPERTY.getCode()); + }else if (wxPropertyContract.getRentShopType().intValue() == EnumRentShopType.POINT.getCode().intValue()) { + wxFlowModel.setFlowType(EnumFlowContractType.PROPERTY_POINT.getCode()); + } + wxFlowModel.updateTenantInfo(wxPropertyContract); + List flows = wxFlowService.getModelBybusiness(wxFlowModel); + if (null != flows && flows.size() > 0) { + return true; + } + return false; + } } 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 9845468a4..0834e5733 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java @@ -2,6 +2,7 @@ package com.iformall.controller.contract; import com.iformall.annotation.SystemControllerLog; import com.iformall.annotation.UserDataRuleAnnotation; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; @@ -9,10 +10,14 @@ import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxBillProperty; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPropertyContract; +import com.iformall.domain.po.WxRentContract; import com.iformall.enums.EnumContractType; import com.iformall.enums.EnumFlowContractType; import com.iformall.enums.EnumFlowKey; import com.iformall.enums.EnumIsPreview; +import com.iformall.enums.EnumRentContractAppStatus; +import com.iformall.enums.EnumRentContractStatus; +import com.iformall.enums.EnumRentShopType; import com.iformall.enums.EnumRentStartType; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxPropertyContractMapper; @@ -28,6 +33,8 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import java.util.Date; import java.util.List; import java.util.Map; @@ -53,7 +60,6 @@ public class WxPropertyContractController extends WxContractBaseController { @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 list(@ModelAttribute WxPropertyContract wxPropertyContract, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::list"); if (null == wxPropertyContract) { @@ -102,19 +108,9 @@ public class WxPropertyContractController extends WxContractBaseController { return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName()); } - - @GetMapping("/del") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "物业合同-删除") - public ResultData delete(Long id) { - logger.debug("[" + getIpAddr() + "] WxPropertyContractController::delete"); - wxPropertyContractService.deleteById(id); - return new ResultData(Result.SUCCESS, "删除成功", null); - } - + @GetMapping("/findById") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "物业合同-根据ID查询") public ResultData findById(Long id) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::findById"); WxBillProperty wxBillProperty = new WxBillProperty(); @@ -128,6 +124,106 @@ public class WxPropertyContractController extends WxContractBaseController { return new ResultData(e.getErrorCode(), e.getMessage()); } } + + + /** + * 作废 + * @param wxRentContract + * @return + */ + @GetMapping("/unvalid") + @SystemControllerLog(description = "物业合同-作废合同") + public ResultData unvalid(@ModelAttribute WxPropertyContract proertyContract) { + WxPropertyContract contract = wxPropertyContractService.getSimpleDetail(proertyContract.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.getApplyStatus().intValue() == EnumRentContractAppStatus.SETBACK.getCode().intValue()))) { + contract.setStatus(EnumRentContractStatus.INVALID.getCode()); + contract.setUpdatetime(new Date()); + try { + wxPropertyContractService.updatePropertyContract(contract); + return new ResultData(contract); + }catch(Exception e) { + logger.error(" WxPropertyContract unvalid error.",e); + return new ResultData(Result.ERROR,"系统错误"); + } + + }else { + return new ResultData(Result.ERROR, "合同状态不允许作废.只能作废草稿或者履约拒绝的合同。"); + } + } + + /** + * 终止 + * @param id + * @param status + * @return + */ + @PostMapping("endContract") + @SystemControllerLog(description = "物业合同-终止合同") + public ResultData endContract(@RequestBody WxPropertyContract proertyContract) { + proertyContract.updateTenantInfo(getTenantInfo()); + wxPropertyContractService.endContract(proertyContract); + return new ResultData(proertyContract); + } + + @GetMapping("effective") + @ApiImplicitParams({}) + @SystemControllerLog(description = "物业合同-合同生效") + public ResultData effective(@ModelAttribute WxPropertyContract proertyContract) { + WxPropertyContract contract = wxPropertyContractService.getSimpleDetail(proertyContract.getId()); + if (null == contract) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"物业合同不存在"); + } + //查询是否有审批流程 + if(propertyContractHasWorkFlow(contract)) { + return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"物业合同存在工作流,不允许直接生效。"); + } + + if (contract.getStatus().intValue() != EnumRentContractStatus.DRAFT.getCode().intValue()) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"租赁合同状态为草稿才能进行此操作"); + } + wxPropertyContractService.updatePropertyContractStatus(proertyContract.getId()); + return new ResultData(Result.SUCCESS,"合同生效成功!"); + } + + @PostMapping("apply") + @SystemControllerLog(description = "物业合同-提交审批") + public ResultData apply(@ModelAttribute WxPropertyContract proertyContract) { + MallUserInfo user = getUser(); + WxPropertyContract contract = wxPropertyContractService.getSimpleDetail(proertyContract.getId()); + if (null == contract) { + return new ResultData(Result.ERROR, "编号["+contract.getId()+"]未找到租金合同"); + } + + //查询是否有审批流程 + if(propertyContractHasWorkFlow(contract)) { + return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"租赁合同存在工作流,不允许直接生效。"); + } + + if (contract.getRentShopType().intValue() == EnumRentShopType.SHOP.getCode().intValue()) { + contract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_PRO_CONTRACT, EnumFlowContractType.PROPERTY, contract.getRemark(), contract.getId())); + }else if (contract.getRentShopType().intValue() == EnumRentShopType.POINT.getCode().intValue()) { + contract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_PRO_POINT_CONTRACT, EnumFlowContractType.PROPERTY_POINT, contract.getRemark(), contract.getId())); + } + return wxPropertyContractService.apply(contract,user); + } + + + @GetMapping("/del") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "物业合同-删除") + public ResultData delete(Long id) { + logger.debug("[" + getIpAddr() + "] WxPropertyContractController::delete"); + wxPropertyContractService.deleteById(id); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @RequestMapping("/download") @SystemControllerLog(description = "物业合同-下载") @@ -144,14 +240,6 @@ public class WxPropertyContractController extends WxContractBaseController { // return new ResultData(Result.SUCCESS, "查询成功", wxPropertyContractService.getRentContractStatusInfo(wxPropertyContract)); // } - @GetMapping("/endPropertyContract") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "物业合同-终止") - public ResultData endRentContract(Long id) { - logger.debug("[" + getIpAddr() + "] WxPropertyContractController::endRentContract"); - return wxPropertyContractService.endRentContract(id); - } - // @GetMapping("/getRentContractList") // @SystemControllerLog(description = "物业合同-查询列表") // public ResultData getRentContractList(@ModelAttribute WxPropertyContract wxPropertyContract) { @@ -184,15 +272,6 @@ public class WxPropertyContractController extends WxContractBaseController { return wxPropertyContractService.updatePropertyContractStatus(wxPropertyContract.getId()); } - @PostMapping("endContract") - @SystemControllerLog(description = "物业合同-终止合同") - public ResultData endContract(@RequestBody WxPropertyContract wxPropertyContract) { - logger.debug("[" + getIpAddr() + "] WxRentContractController::endContract"); - wxPropertyContract.updateTenantInfo(getTenantInfo()); - wxPropertyContractService.endContract(wxPropertyContract); - return new ResultData(); - } - /** * 预览账单展示,编辑账期,后端生成账单金额 * @param wxPropertyContract @@ -210,12 +289,5 @@ public class WxPropertyContractController extends WxContractBaseController { List result = wxPropertyContractService.buildProperty(new WxMerchant(),getUserId(),dbRent, EnumIsPreview.YES.getCode(), false); return new ResultData(result); } - - @PostMapping("apply") - @SystemControllerLog(description = "物业合同-提交审批") - public ResultData apply(@RequestBody WxPropertyContract wxPropertyContract) { - MallUserInfo user = getUser(); - wxPropertyContract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_PRO_CONTRACT, EnumFlowContractType.PROPERTY, wxPropertyContract.getRemark(), wxPropertyContract.getId())); - return wxPropertyContractService.apply(wxPropertyContract, user); - } + } 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 ff15d0d45..2651dfe6b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -328,9 +328,8 @@ public class WxRentContractController extends WxContractBaseController { * @return */ @GetMapping("/unvalid") - @SystemControllerLog(description = "作废合同") + @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, "合同不存在."); @@ -386,7 +385,7 @@ public class WxRentContractController extends WxContractBaseController { @GetMapping("effective") @ApiImplicitParams({}) - @SystemControllerLog(description = "合同生效") + @SystemControllerLog(description = "租金合同-合同生效") public ResultData effective(@ModelAttribute WxRentContract wxRentContract) { logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList"); WxRentContract contract = wxRentContractService.getSimpleDeatil(wxRentContract.getId()); @@ -423,8 +422,11 @@ public class WxRentContractController extends WxContractBaseController { if(rentContractHasWorkFlow(rentContract)) { return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"租赁合同存在工作流,不允许直接生效。"); } - - rentContract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_RENT_CONTRACT, EnumFlowContractType.RENT, wxRentContract.getRemark(), wxRentContract.getId())); + if (rentContract.getRentShopType().intValue() == EnumRentShopType.SHOP.getCode().intValue()) { + rentContract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_RENT_CONTRACT, EnumFlowContractType.RENT, wxRentContract.getRemark(), wxRentContract.getId())); + }else if (rentContract.getRentShopType().intValue() == EnumRentShopType.POINT.getCode().intValue()) { + rentContract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_SHOP_CONTRACT, EnumFlowContractType.RENT_POINT, wxRentContract.getRemark(), wxRentContract.getId())); + } return wxRentContractService.apply(rentContract,user); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java b/mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java index 73baac2fe..f49a29a64 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java @@ -9,6 +9,9 @@ import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPropertyContract; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import org.apache.ibatis.annotations.Param; + import java.util.List; import java.util.Map; @@ -55,7 +58,7 @@ public interface WxPropertyContractService { //Object getRentContractStatusInfo(WxPropertyContract record); - ResultData endRentContract(Long id); + //ResultData endRentContract(Long id); //Object getRentContractList(WxPropertyContract record); @@ -81,5 +84,9 @@ public interface WxPropertyContractService { ResultData apply(WxPropertyContract wxPropertyContract,MallUserInfo user); void outDateContract(WxMall wxMall); + + WxPropertyContract getSimpleDetail(@Param("id") Long id); + + void updatePropertyContract(WxPropertyContract record); } 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 3a68efcee..0c2af94dd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -912,31 +912,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService // return resultData; // } - @Transactional(rollbackFor = {Exception.class}) - @Override - public ResultData endRentContract(Long id) { - WxPropertyContract wxPropertyContract = wxPropertyContractMapper.selectById(id); - if (wxPropertyContract == null) { - return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND); - } - wxPropertyContract.setStatus(EnumRentContractStatus.TERMINATE.getCode()); - try { - wxPropertyContract.setUpdatetime(new Date()); - wxPropertyContractMapper.updateById(wxPropertyContract); - - //物业账单失效 - WxBillProperty billProperty = new WxBillProperty(); - billProperty.setPropertyContractId(id); - wxBillPropertyMapper.updateInvalidStatus(billProperty); - - } catch (MallinkException e) { - logger.info("终止合同失败:" + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); - } - return new ResultData(Result.SUCCESS, "操作成功"); - } - - // @Override // public Object getRentContractList(WxPropertyContract record) { // Map params = new HashMap<>(); @@ -1128,7 +1103,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if ((EnumRentContractStatus.DRAFT.getCode().intValue() == rentContract.getStatus().intValue() && EnumRentContractAppStatus.DEFAULT.getCode().intValue() == rentContract.getApplyStatus().intValue()) || (EnumRentContractStatus.PERFORMANCE.getCode().intValue() == rentContract.getStatus().intValue() - && EnumRentContractAppStatus.REJECT.getCode().intValue() == rentContract.getApplyStatus().intValue()) + && (EnumRentContractAppStatus.REJECT.getCode().intValue() == rentContract.getApplyStatus().intValue() || + EnumRentContractAppStatus.SETBACK.getCode().intValue() == rentContract.getApplyStatus().intValue())) ) { Integer bussinessType = (Integer) rentContract.getFlowParams().get("businessType"); if (null == bussinessType) { @@ -1166,6 +1142,16 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } } + + @Override + public WxPropertyContract getSimpleDetail(Long id) { + return wxPropertyContractMapper.selectById(id); + } + + @Override + public void updatePropertyContract(WxPropertyContract record) { + wxPropertyContractMapper.updateById(record); + } }