From 5814456e3750ac6855de64a64b820825f69163b2 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 18 Aug 2020 17:38:49 +0800 Subject: [PATCH 1/7] fix contract --- .../workflow/WxFlowAbleController.java | 14 -------------- .../impl/WxRentContractServiceImpl.java | 18 +++++++++--------- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/workflow/WxFlowAbleController.java b/mallinkAdmin/src/main/java/com/iformall/controller/workflow/WxFlowAbleController.java index f89a8742e..3627eabd5 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/workflow/WxFlowAbleController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/workflow/WxFlowAbleController.java @@ -236,20 +236,6 @@ public class WxFlowAbleController extends BaseController { wxFlowModel.updateTenantInfo(getTenantInfo()); return new ResultData(wxFlowService.getModelBybusiness(wxFlowModel)); } - - @ApiOperation("业务查询是否存在模板") - @GetMapping(value = "/businessHasFlow") - @SystemControllerLog(description = "工作流-模板列表") - public Integer businessHasFlow(@ModelAttribute WxFlowModel wxFlowModel) { - logger.debug("[" + getIpAddr() + "] FlowAbleController::getModelBybusiness"); - wxFlowModel.updateTenantInfo(getTenantInfo()); - List models = wxFlowService.getModelBybusiness(wxFlowModel); - if (null != models && models.size() > 0 ) { - return 1; - }else { - return 0; - } - } /** * 配置列表 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 7ee958a12..92e9c7351 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -1111,15 +1111,15 @@ public class WxRentContractServiceImpl implements WxRentContractService { } int month = 12; - int divide = lease / month; - int mod = lease % month; - int[] leaseArr = new int[size]; - for (int i = 0; i < divide; i++) { - leaseArr[i] = month; - } - if (mod > 0) { - leaseArr[divide] = mod; - } +// int divide = lease / month; +// int mod = lease % month; +// int[] leaseArr = new int[size]; +// for (int i = 0; i < divide; i++) { +// leaseArr[i] = month; +// } +// if (mod > 0) { +// leaseArr[divide] = mod; +// } int billcount = 0; List resultList = new ArrayList<>(); From 75fdd6ca12d4632901d775bc2e9fe7e7dfa7141e Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 18 Aug 2020 18:08:51 +0800 Subject: [PATCH 2/7] fix contract --- .../iformall/controller/contract/WxRentContractController.java | 1 - 1 file changed, 1 deletion(-) 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 7140e88c2..3e200c4e7 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -111,7 +111,6 @@ public class WxRentContractController extends WxContractBaseController { // } MallUserInfo user = getUser(); wxRentContract.updateTenantInfo(user); - //wxRentContract.setTenantId("789"); wxRentContract.setAdjustPeriodHandle(); Date oldDate = wxRentContract.getRentalStartDate(); if(wxRentContract.getRentStartType()!=null &&wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ From df3d5df982a187bfc47a6876f0924b9e0d6e25f3 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 19 Aug 2020 10:01:55 +0800 Subject: [PATCH 3/7] fix --- .../contract/WxContractBaseController.java | 24 +++++++ .../contract/WxRentContractController.java | 66 ++++++++++++++----- .../service/WxRentContractService.java | 7 ++ .../impl/WxRentContractServiceImpl.java | 42 ++++++++---- 4 files changed, 109 insertions(+), 30 deletions(-) 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 abaa55d03..b309ba36a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java @@ -1,17 +1,26 @@ package com.iformall.controller.contract; import java.util.HashMap; +import java.util.List; import java.util.Map; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxFlowModel; +import com.iformall.domain.po.WxRentContract; import com.iformall.enums.EnumFlowContractType; import com.iformall.enums.EnumFlowKey; +import com.iformall.enums.EnumRentShopType; +import com.iformall.service.WxFlowService; @RestController public class WxContractBaseController extends BaseController{ + @Autowired + private WxFlowService wxFlowService; + protected Map generateFlowParams(EnumFlowKey flowType,EnumFlowContractType contractType,String remark,Long contractId) { Map map = new HashMap(); map.put("businessType", flowType.getCode()); @@ -23,4 +32,19 @@ public class WxContractBaseController extends BaseController{ map.put("variables", variables); return map; } + + protected boolean rentContractHasWorkFlow(WxRentContract wxRentContract) { + WxFlowModel wxFlowModel = new WxFlowModel(); + if (wxRentContract.getRentShopType().intValue() == EnumRentShopType.SHOP.getCode().intValue()) { + wxFlowModel.setFlowType(EnumFlowContractType.RENT.getCode()); + }else if (wxRentContract.getRentShopType().intValue() == EnumRentShopType.POINT.getCode().intValue()) { + wxFlowModel.setFlowType(EnumFlowContractType.RENT_POINT.getCode()); + } + wxFlowModel.updateTenantInfo(wxRentContract); + 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/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java index 3e200c4e7..f4cf16c77 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -16,6 +16,7 @@ import com.iformall.enums.EnumFromType; 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.WxBillPropertyMapper; @@ -71,14 +72,12 @@ public class WxRentContractController extends WxContractBaseController { @Autowired private WxShopService wxShopService; - - + @UserDataRuleAnnotation("rent_contract_list") @GetMapping("/list") @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 WxRentContract wxRentContract, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] WxRentContractController::list"); if (null == wxRentContract) { @@ -169,7 +168,6 @@ public class WxRentContractController extends WxContractBaseController { @GetMapping("/findById") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "租赁合同-查找") public ResultData findById(Long id) { logger.debug("[" + getIpAddr() + "] WxRentContractController::findById"); // 同步欠缴状态 @@ -232,7 +230,6 @@ public class WxRentContractController extends WxContractBaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "merchantId", value = "merchantId", dataType = "Long", paramType = "query", required = true), @ApiImplicitParam(name = "contractId", value = "contractId", dataType = "Long", paramType = "query", required = true)}) - @SystemControllerLog(description = "租赁合同-终结合同") public ResultData merchantShops(Long merchantId,Long contractId) { List shopList = wxMerchantService.getMerchantShopIds(merchantId); @@ -297,7 +294,6 @@ public class WxRentContractController extends WxContractBaseController { */ @GetMapping("getXuQianRentContract") @ApiImplicitParams({}) - @SystemControllerLog(description = "查询续签合同") public ResultData getRentContractList(@ModelAttribute WxRentContract wxRentContract) { logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList"); wxRentContract.updateTenantInfo(getTenantInfo()); @@ -386,12 +382,56 @@ public class WxRentContractController extends WxContractBaseController { } + @GetMapping("effective") + @ApiImplicitParams({}) + @SystemControllerLog(description = "合同生效") + public ResultData effective(@ModelAttribute WxRentContract wxRentContract) { + logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList"); + WxRentContract contract = wxRentContractService.getSimpleDeatil(wxRentContract.getId()); + if (null == contract) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"租赁合同不存在"); + } + //查询是否有审批流程 + if(rentContractHasWorkFlow(contract)) { + return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"租赁合同存在工作流,不允许直接生效。"); + } + + if (contract.getStatus().intValue() != EnumRentContractStatus.DRAFT.getCode().intValue()) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"租赁合同状态为草稿才能进行此操作"); + } + //店铺是否存在其他有效合同里面 + boolean result = wxRentContractService.hasOtherValidContractShop(contract); + if (result) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"店铺已经在其他计租中或者已签约未到期的合同里面了。"); + } + wxRentContractService.updateRentContractStatus(wxRentContract.getId()); + return new ResultData(Result.SUCCESS,"合同生效成功!"); + } + + @PostMapping("apply") + @SystemControllerLog(description = "租赁合同-提交审批") + public ResultData apply(@ModelAttribute WxRentContract wxRentContract) { + MallUserInfo user = getUser(); + + WxRentContract rentContract = wxRentContractMapper.selectById(wxRentContract.getId()); + if (null == rentContract) { + return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]未找到租金合同"); + } + + //查询是否有审批流程 + if(rentContractHasWorkFlow(rentContract)) { + return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"租赁合同存在工作流,不允许直接生效。"); + } + + rentContract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_RENT_CONTRACT, EnumFlowContractType.RENT, wxRentContract.getRemark(), wxRentContract.getId())); + return wxRentContractService.apply(rentContract,user); + } + @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(); @@ -425,7 +465,6 @@ public class WxRentContractController extends WxContractBaseController { @GetMapping("/hasRentStatus") - @SystemControllerLog(description = "查询店铺租赁状态") public ResultData hasRentStatus(@ModelAttribute WxRentContract wxRentContract) { logger.debug("[" + getIpAddr() + "] WxRentContractController::hasRentStatus"); wxRentContract.updateTenantInfo(getTenantInfo()); @@ -433,7 +472,6 @@ public class WxRentContractController extends WxContractBaseController { } @GetMapping("/hasContractNumber") - @SystemControllerLog(description = "租赁合同-检查合同编号是否存在") public ResultData hasContractNumber(@ModelAttribute WxRentContract wxRentContract) { logger.debug("[" + getIpAddr() + "] WxRentContractController::hasContractNumber"); wxRentContract.updateTenantInfo(getTenantInfo()); @@ -441,7 +479,6 @@ public class WxRentContractController extends WxContractBaseController { } @GetMapping("getMerchantList") - @SystemControllerLog(description = "获取商户列表") @ApiImplicitParams({ @ApiImplicitParam(name = "shopType", value = "店铺类型 1:店铺 2:多经点位", dataType = "Integer", paramType = "query", required = true)}) public ResultData getMerchantList(Integer shopType) throws Exception{ @@ -475,7 +512,6 @@ public class WxRentContractController extends WxContractBaseController { * @return */ @PostMapping("buildBillPriceList") - @SystemControllerLog(description = "租赁合同-生成账单列表金额") public ResultData buildBillPriceList(@RequestBody WxRentContract wxRentContract) throws Exception{ logger.debug("[" + getIpAddr() + "] WxRentContractController::buildBillPriceList"); WxRentContract dbRent = wxRentContractMapper.selectById(wxRentContract.getId()); @@ -598,13 +634,7 @@ public class WxRentContractController extends WxContractBaseController { return wxRentContractService.getContractByContractNumber(wxRentContract); } - @PostMapping("apply") - @SystemControllerLog(description = "租赁合同-提交审批") - public ResultData apply(@ModelAttribute WxRentContract wxRentContract) { - MallUserInfo user = getUser(); - wxRentContract.setFlowParams(generateFlowParams(EnumFlowKey.NEW_RENT_CONTRACT, EnumFlowContractType.RENT, wxRentContract.getRemark(), wxRentContract.getId())); - return wxRentContractService.apply(wxRentContract,user); - } + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java b/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java index c5c042694..1e22db687 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java @@ -112,4 +112,11 @@ public interface WxRentContractService { WxRentContract getSimpleDeatil(Long id); + /** + * 查询合同的店铺是否已经在其他有效合同里面了 + * @param wxRentContract + * @return + */ + boolean hasOtherValidContractShop(WxRentContract wxRentContract); + } 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 92e9c7351..f901f2d84 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -2451,24 +2451,19 @@ public class WxRentContractServiceImpl implements WxRentContractService { } @Override - public ResultData apply(WxRentContract wxRentContract,MallUserInfo user) { + public ResultData apply(WxRentContract rentContract,MallUserInfo user) { //如果存在其他的草稿状态或者履约驳回状态的合同,不允许提交审批 - Integer count = wxRentContractMapper.getCanApplyCount(wxRentContract.getId()); + Integer count = wxRentContractMapper.getCanApplyCount(rentContract.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()+"]未找到租金合同"); - } - rentContract.setFlowParams(wxRentContract.getFlowParams()); if (CollectionUtils.isEmpty(rentContract.getFlowParams())) { - return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]租金合同没有审批流程."); + return new ResultData(Result.ERROR, "编号["+rentContract.getId()+"]租金合同没有审批流程."); } if (rentContract.getMerchantId() == null) { - return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]租金合同没有绑定商户."); + return new ResultData(Result.ERROR, "编号["+rentContract.getId()+"]租金合同没有绑定商户."); } if ((EnumRentContractStatus.DRAFT.getCode().intValue() == rentContract.getStatus().intValue() @@ -2478,17 +2473,17 @@ public class WxRentContractServiceImpl implements WxRentContractService { ) { Integer bussinessType = (Integer) rentContract.getFlowParams().get("businessType"); if (null == bussinessType) { - return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]租金合同FlowParams错误,未找到businessType."); + return new ResultData(Result.ERROR, "编号["+rentContract.getId()+"]租金合同FlowParams错误,未找到businessType."); } WxFlowModel flowModle = wxFlowService.getModelByType(bussinessType, rentContract); if (null == flowModle) { - return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]租金合同配置的流程["+String.valueOf(bussinessType)+"]未找到流程模板."); + return new ResultData(Result.ERROR, "编号["+rentContract.getId()+"]租金合同配置的流程["+String.valueOf(bussinessType)+"]未找到流程模板."); } rentContract.getFlowParams().put("businessId", rentContract.getId().toString()); wxFlowService.start(rentContract.getFlowParams(), user.getId(), user.getName(), rentContract); return new ResultData(Result.SUCCESS,"提交审批成功",rentContract); }else { - return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]租金合同状态不能提交审批.允许提交的状态为 [草稿+未提交审批],[履约中+审批驳回]"); + return new ResultData(Result.ERROR, "编号["+rentContract.getId()+"]租金合同状态不能提交审批.允许提交的状态为 [草稿+未提交审批],[履约中+审批驳回]"); } } @@ -2550,4 +2545,27 @@ public class WxRentContractServiceImpl implements WxRentContractService { public WxRentContract getSimpleDeatil(Long id) { return wxRentContractMapper.selectById(id); } + + @Override + public boolean hasOtherValidContractShop(WxRentContract wxRentContract) { + WxRentContract wrc = new WxRentContract(); + wrc.setMerchantId(wxRentContract.getMerchantId()); + List validstatuss = new ArrayList(); + validstatuss.add(EnumRentContractStatus.PAING.getCode()); + validstatuss.add(EnumRentContractStatus.READY_FOR_PAING.getCode()); + wrc.setStatuss(validstatuss); + List contractList = wxRentContractMapper.findList(wrc); + boolean exists =false; + for (WxRentContract wc : contractList) { + if (null != wxRentContract.shopIdsByRentInfo()) { + for (Long sid : wxRentContract.shopIdsByRentInfo()) { + if(wc.getRentInfo().indexOf(String.valueOf(sid)) != -1 ) { + exists = true; + break; + } + } + } + } + return exists; + } } From afe1e050088df5d46d168241798e86aac3f5b883 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 19 Aug 2020 10:11:55 +0800 Subject: [PATCH 4/7] fix contract --- .../com/iformall/service/impl/WxRentContractServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 f901f2d84..f5c4a494b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -728,6 +728,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { Date tempDate = record.getRentalStartDate(); record.setRentalStartDate(oldRentStartDate); record.setShopName(shopName); + record.setStatus(wxRentContract.getStatus()); wxRentContractMapper.updateById(record); record.setRentalStartDate(tempDate); } catch (Exception e) { From cac39af6c55088c567423e5919f5a623b3f2def0 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 19 Aug 2020 10:59:31 +0800 Subject: [PATCH 5/7] fix contract --- .../contract/WxContractBaseController.java | 17 +++++++++++++---- .../contract/WxRentContractController.java | 3 +-- 2 files changed, 14 insertions(+), 6 deletions(-) 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 b309ba36a..3cff0d3a3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java @@ -1,5 +1,6 @@ package com.iformall.controller.contract; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -26,10 +27,18 @@ public class WxContractBaseController extends BaseController{ map.put("businessType", flowType.getCode()); map.put("remark", remark); map.put("businessId", String.valueOf(contractId)); - Map variables = new HashMap(); - variables.put("contractType",contractType.getCode()); - variables.put("contractNumber", String.valueOf(contractId)); - map.put("variables", variables); + List variablesList = new ArrayList(); + Map contractTypeMap = new HashMap(); + contractTypeMap.put("key","contractType"); + contractTypeMap.put("value",String.valueOf(contractType.getCode())); + variablesList.add(contractTypeMap); + + Map contractNumberMap = new HashMap(); + contractNumberMap.put("key","contractNumber"); + contractNumberMap.put("value", String.valueOf(contractId)); + variablesList.add(contractNumberMap); + + map.put("variables", variablesList); return map; } 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 f4cf16c77..f94b24ece 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -288,7 +288,7 @@ public class WxRentContractController extends WxContractBaseController { } /** - * 一个商户只能存在一个续签合同。如果有计租中的,则取计租中最新的一条,如果没有计租中的,则取正常到期最近的一条 + * 查询商户计租中的合同 * @param wxRentContract * @return */ @@ -412,7 +412,6 @@ public class WxRentContractController extends WxContractBaseController { @SystemControllerLog(description = "租赁合同-提交审批") public ResultData apply(@ModelAttribute WxRentContract wxRentContract) { MallUserInfo user = getUser(); - WxRentContract rentContract = wxRentContractMapper.selectById(wxRentContract.getId()); if (null == rentContract) { return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]未找到租金合同"); From b663b516556790ebc644e87f910341106bad8438 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 19 Aug 2020 11:09:04 +0800 Subject: [PATCH 6/7] fix contract --- .../controller/contract/WxRentContractController.java | 6 ++++-- .../iformall/service/impl/WxRentContractServiceImpl.java | 3 ++- 2 files changed, 6 insertions(+), 3 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 f94b24ece..ff15d0d45 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -196,7 +196,8 @@ public class WxRentContractController extends WxContractBaseController { if (cure.getStatus().intValue() == EnumRentContractStatus.DRAFT.getCode().intValue() || (cure.getStatus().intValue() == EnumRentContractStatus.PERFORMANCE.getCode().intValue() - && cure.getApplyStatus().intValue()== EnumRentContractAppStatus.REJECT.getCode().intValue())) { + && (cure.getApplyStatus().intValue()== EnumRentContractAppStatus.REJECT.getCode().intValue() || + cure.getApplyStatus().intValue()== EnumRentContractAppStatus.SETBACK.getCode().intValue()))) { if(StringUtils.isBlank(rentContract.getBusDiscountRatio())){ rentContract.setBusDiscountTime(new Integer(0)); } @@ -336,7 +337,8 @@ public class WxRentContractController extends WxContractBaseController { } 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.REJECT.getCode().intValue() || + contract.getApplyStatus().intValue() == EnumRentContractAppStatus.SETBACK.getCode().intValue()))) { contract.setStatus(EnumRentContractStatus.INVALID.getCode()); contract.setUpdatetime(new Date()); return wxRentContractService.updateRentContract(contract); 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 f5c4a494b..bebdf2e1c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -2470,7 +2470,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { 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) { From f88ad4062a6039cf6735255c6c80b7c40d34cd1e Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 19 Aug 2020 12:25:42 +0800 Subject: [PATCH 7/7] fix contract --- .../contract/WxContractBaseController.java | 16 ++ .../WxPropertyContractController.java | 146 +++++++++++++----- .../contract/WxRentContractController.java | 12 +- .../service/WxPropertyContractService.java | 9 +- .../impl/WxPropertyContractServiceImpl.java | 38 ++--- 5 files changed, 152 insertions(+), 69 deletions(-) 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); + } }