소스 검색

Merge branch 'release_real_202008' of https://git.malls.iformall.com/server/formallProject into release_real_202008

release_toaliyun_real
xhxu 5 년 전
부모
커밋
a7272d0af0
8개의 변경된 파일287개의 추가작업 그리고 128개의 파일을 삭제
  1. +53
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java
  2. +109
    -37
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java
  3. +56
    -24
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java
  4. +0
    -14
      mallinkAdmin/src/main/java/com/iformall/controller/workflow/WxFlowAbleController.java
  5. +8
    -1
      mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java
  6. +7
    -0
      mallinkService/src/main/java/com/iformall/service/WxRentContractService.java
  7. +12
    -26
      mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java
  8. +42
    -22
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 53
- 4
mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java 파일 보기

@@ -1,26 +1,75 @@
package com.iformall.controller.contract; package com.iformall.controller.contract;


import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;


import com.iformall.controller.base.BaseController; 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.EnumFlowContractType;
import com.iformall.enums.EnumFlowKey; import com.iformall.enums.EnumFlowKey;
import com.iformall.enums.EnumRentShopType;
import com.iformall.service.WxFlowService;


@RestController @RestController
public class WxContractBaseController extends BaseController{ public class WxContractBaseController extends BaseController{


@Autowired
private WxFlowService wxFlowService;
protected Map<String,Object> generateFlowParams(EnumFlowKey flowType,EnumFlowContractType contractType,String remark,Long contractId) { protected Map<String,Object> generateFlowParams(EnumFlowKey flowType,EnumFlowContractType contractType,String remark,Long contractId) {
Map<String,Object> map = new HashMap<String,Object>(); Map<String,Object> map = new HashMap<String,Object>();
map.put("businessType", flowType.getCode()); map.put("businessType", flowType.getCode());
map.put("remark", remark); map.put("remark", remark);
map.put("businessId", String.valueOf(contractId)); map.put("businessId", String.valueOf(contractId));
Map variables = new HashMap<String,Object>();
variables.put("contractType",contractType.getCode());
variables.put("contractNumber", String.valueOf(contractId));
map.put("variables", variables);
List<Map> variablesList = new ArrayList<Map>();
Map contractTypeMap = new HashMap<String,Object>();
contractTypeMap.put("key","contractType");
contractTypeMap.put("value",String.valueOf(contractType.getCode()));
variablesList.add(contractTypeMap);
Map contractNumberMap = new HashMap<String,Object>();
contractNumberMap.put("key","contractNumber");
contractNumberMap.put("value", String.valueOf(contractId));
variablesList.add(contractNumberMap);
map.put("variables", variablesList);
return map; 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<WxFlowModel> flows = wxFlowService.getModelBybusiness(wxFlowModel);
if (null != flows && flows.size() > 0) {
return true;
}
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<WxFlowModel> flows = wxFlowService.getModelBybusiness(wxFlowModel);
if (null != flows && flows.size() > 0) {
return true;
}
return false;
}
} }

+ 109
- 37
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.SystemControllerLog;
import com.iformall.annotation.UserDataRuleAnnotation; import com.iformall.annotation.UserDataRuleAnnotation;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result; import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController; 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.WxBillProperty;
import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxPropertyContract; import com.iformall.domain.po.WxPropertyContract;
import com.iformall.domain.po.WxRentContract;
import com.iformall.enums.EnumContractType; import com.iformall.enums.EnumContractType;
import com.iformall.enums.EnumFlowContractType; import com.iformall.enums.EnumFlowContractType;
import com.iformall.enums.EnumFlowKey; import com.iformall.enums.EnumFlowKey;
import com.iformall.enums.EnumIsPreview; 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.enums.EnumRentStartType;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxPropertyContractMapper; import com.iformall.mapper.WxPropertyContractMapper;
@@ -28,6 +33,8 @@ import org.springframework.web.bind.annotation.*;


import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;


@@ -53,7 +60,6 @@ public class WxPropertyContractController extends WxContractBaseController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", 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) { public ResultData list(@ModelAttribute WxPropertyContract wxPropertyContract, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxPropertyContractController::list"); logger.debug("[" + getIpAddr() + "] WxPropertyContractController::list");
if (null == wxPropertyContract) { if (null == wxPropertyContract) {
@@ -102,19 +108,9 @@ public class WxPropertyContractController extends WxContractBaseController {
return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName()); 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") @GetMapping("/findById")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
@SystemControllerLog(description = "物业合同-根据ID查询")
public ResultData findById(Long id) { public ResultData findById(Long id) {
logger.debug("[" + getIpAddr() + "] WxPropertyContractController::findById"); logger.debug("[" + getIpAddr() + "] WxPropertyContractController::findById");
WxBillProperty wxBillProperty = new WxBillProperty(); WxBillProperty wxBillProperty = new WxBillProperty();
@@ -128,6 +124,106 @@ public class WxPropertyContractController extends WxContractBaseController {
return new ResultData(e.getErrorCode(), e.getMessage()); 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") @RequestMapping("/download")
@SystemControllerLog(description = "物业合同-下载") @SystemControllerLog(description = "物业合同-下载")
@@ -144,14 +240,6 @@ public class WxPropertyContractController extends WxContractBaseController {
// return new ResultData(Result.SUCCESS, "查询成功", wxPropertyContractService.getRentContractStatusInfo(wxPropertyContract)); // 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") // @GetMapping("/getRentContractList")
// @SystemControllerLog(description = "物业合同-查询列表") // @SystemControllerLog(description = "物业合同-查询列表")
// public ResultData getRentContractList(@ModelAttribute WxPropertyContract wxPropertyContract) { // public ResultData getRentContractList(@ModelAttribute WxPropertyContract wxPropertyContract) {
@@ -184,15 +272,6 @@ public class WxPropertyContractController extends WxContractBaseController {
return wxPropertyContractService.updatePropertyContractStatus(wxPropertyContract.getId()); 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 * @param wxPropertyContract
@@ -210,12 +289,5 @@ public class WxPropertyContractController extends WxContractBaseController {
List<WxBillProperty> result = wxPropertyContractService.buildProperty(new WxMerchant(),getUserId(),dbRent, EnumIsPreview.YES.getCode(), false); List<WxBillProperty> result = wxPropertyContractService.buildProperty(new WxMerchant(),getUserId(),dbRent, EnumIsPreview.YES.getCode(), false);
return new ResultData(result); 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);
}

} }

+ 56
- 24
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.EnumIsPreview;
import com.iformall.enums.EnumRentContractAppStatus; import com.iformall.enums.EnumRentContractAppStatus;
import com.iformall.enums.EnumRentContractStatus; import com.iformall.enums.EnumRentContractStatus;
import com.iformall.enums.EnumRentShopType;
import com.iformall.enums.EnumRentStartType; import com.iformall.enums.EnumRentStartType;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxBillPropertyMapper; import com.iformall.mapper.WxBillPropertyMapper;
@@ -71,14 +72,12 @@ public class WxRentContractController extends WxContractBaseController {
@Autowired @Autowired
private WxShopService wxShopService; private WxShopService wxShopService;


@UserDataRuleAnnotation("rent_contract_list") @UserDataRuleAnnotation("rent_contract_list")
@GetMapping("/list") @GetMapping("/list")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", 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) { public ResultData list(@ModelAttribute WxRentContract wxRentContract, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::list"); logger.debug("[" + getIpAddr() + "] WxRentContractController::list");
if (null == wxRentContract) { if (null == wxRentContract) {
@@ -111,7 +110,6 @@ public class WxRentContractController extends WxContractBaseController {
// } // }
MallUserInfo user = getUser(); MallUserInfo user = getUser();
wxRentContract.updateTenantInfo(user); wxRentContract.updateTenantInfo(user);
//wxRentContract.setTenantId("789");
wxRentContract.setAdjustPeriodHandle(); wxRentContract.setAdjustPeriodHandle();
Date oldDate = wxRentContract.getRentalStartDate(); Date oldDate = wxRentContract.getRentalStartDate();
if(wxRentContract.getRentStartType()!=null &&wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ if(wxRentContract.getRentStartType()!=null &&wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){
@@ -170,7 +168,6 @@ public class WxRentContractController extends WxContractBaseController {
@GetMapping("/findById") @GetMapping("/findById")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
@SystemControllerLog(description = "租赁合同-查找")
public ResultData findById(Long id) { public ResultData findById(Long id) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::findById"); logger.debug("[" + getIpAddr() + "] WxRentContractController::findById");
// 同步欠缴状态 // 同步欠缴状态
@@ -199,7 +196,8 @@ public class WxRentContractController extends WxContractBaseController {
if (cure.getStatus().intValue() == EnumRentContractStatus.DRAFT.getCode().intValue() || if (cure.getStatus().intValue() == EnumRentContractStatus.DRAFT.getCode().intValue() ||
(cure.getStatus().intValue() == EnumRentContractStatus.PERFORMANCE.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())){ if(StringUtils.isBlank(rentContract.getBusDiscountRatio())){
rentContract.setBusDiscountTime(new Integer(0)); rentContract.setBusDiscountTime(new Integer(0));
} }
@@ -233,7 +231,6 @@ public class WxRentContractController extends WxContractBaseController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "merchantId", value = "merchantId", dataType = "Long", paramType = "query", required = true), @ApiImplicitParam(name = "merchantId", value = "merchantId", dataType = "Long", paramType = "query", required = true),
@ApiImplicitParam(name = "contractId", value = "contractId", 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) { public ResultData merchantShops(Long merchantId,Long contractId) {
List<Long> shopList = wxMerchantService.getMerchantShopIds(merchantId); List<Long> shopList = wxMerchantService.getMerchantShopIds(merchantId);
@@ -292,13 +289,12 @@ public class WxRentContractController extends WxContractBaseController {
} }
/** /**
* 一个商户只能存在一个续签合同。如果有计租中的,则取计租中最新的一条,如果没有计租中的,则取正常到期最近的一条
* 查询商户计租中的合同
* @param wxRentContract * @param wxRentContract
* @return * @return
*/ */
@GetMapping("getXuQianRentContract") @GetMapping("getXuQianRentContract")
@ApiImplicitParams({}) @ApiImplicitParams({})
@SystemControllerLog(description = "查询续签合同")
public ResultData getRentContractList(@ModelAttribute WxRentContract wxRentContract) { public ResultData getRentContractList(@ModelAttribute WxRentContract wxRentContract) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList"); logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList");
wxRentContract.updateTenantInfo(getTenantInfo()); wxRentContract.updateTenantInfo(getTenantInfo());
@@ -332,16 +328,16 @@ public class WxRentContractController extends WxContractBaseController {
* @return * @return
*/ */
@GetMapping("/unvalid") @GetMapping("/unvalid")
@SystemControllerLog(description = "作废合同")
@SystemControllerLog(description = "租金合同-作废合同")
public ResultData unvalid(@ModelAttribute WxRentContract wxRentContract) { public ResultData unvalid(@ModelAttribute WxRentContract wxRentContract) {
//wxRentContract.updateTenantInfo(getTenantInfo());
WxRentContract contract = wxRentContractService.getSimpleDeatil(wxRentContract.getId()); WxRentContract contract = wxRentContractService.getSimpleDeatil(wxRentContract.getId());
if (null == contract) { if (null == contract) {
return new ResultData(Result.ERROR, "合同不存在."); return new ResultData(Result.ERROR, "合同不存在.");
} }
if (contract.getStatus().intValue() == EnumRentContractStatus.DRAFT.getCode().intValue() || if (contract.getStatus().intValue() == EnumRentContractStatus.DRAFT.getCode().intValue() ||
(contract.getStatus().intValue() == EnumRentContractStatus.PERFORMANCE.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.setStatus(EnumRentContractStatus.INVALID.getCode());
contract.setUpdatetime(new Date()); contract.setUpdatetime(new Date());
return wxRentContractService.updateRentContract(contract); return wxRentContractService.updateRentContract(contract);
@@ -387,12 +383,58 @@ 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(),"租赁合同存在工作流,不允许直接生效。");
}
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);
}
@GetMapping("getRentContractList") @GetMapping("getRentContractList")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", 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) { public ResultData getRentContractList(@ModelAttribute WxRentContract wxRentContract, Integer validStatus, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList"); logger.debug("[" + getIpAddr() + "] WxRentContractController::getRentContractList");
if (null == wxRentContract) wxRentContract = new WxRentContract(); if (null == wxRentContract) wxRentContract = new WxRentContract();
@@ -426,7 +468,6 @@ public class WxRentContractController extends WxContractBaseController {
@GetMapping("/hasRentStatus") @GetMapping("/hasRentStatus")
@SystemControllerLog(description = "查询店铺租赁状态")
public ResultData hasRentStatus(@ModelAttribute WxRentContract wxRentContract) { public ResultData hasRentStatus(@ModelAttribute WxRentContract wxRentContract) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::hasRentStatus"); logger.debug("[" + getIpAddr() + "] WxRentContractController::hasRentStatus");
wxRentContract.updateTenantInfo(getTenantInfo()); wxRentContract.updateTenantInfo(getTenantInfo());
@@ -434,7 +475,6 @@ public class WxRentContractController extends WxContractBaseController {
} }


@GetMapping("/hasContractNumber") @GetMapping("/hasContractNumber")
@SystemControllerLog(description = "租赁合同-检查合同编号是否存在")
public ResultData hasContractNumber(@ModelAttribute WxRentContract wxRentContract) { public ResultData hasContractNumber(@ModelAttribute WxRentContract wxRentContract) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::hasContractNumber"); logger.debug("[" + getIpAddr() + "] WxRentContractController::hasContractNumber");
wxRentContract.updateTenantInfo(getTenantInfo()); wxRentContract.updateTenantInfo(getTenantInfo());
@@ -442,7 +482,6 @@ public class WxRentContractController extends WxContractBaseController {
} }
@GetMapping("getMerchantList") @GetMapping("getMerchantList")
@SystemControllerLog(description = "获取商户列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "shopType", value = "店铺类型 1:店铺 2:多经点位", dataType = "Integer", paramType = "query", required = true)}) @ApiImplicitParam(name = "shopType", value = "店铺类型 1:店铺 2:多经点位", dataType = "Integer", paramType = "query", required = true)})
public ResultData getMerchantList(Integer shopType) throws Exception{ public ResultData getMerchantList(Integer shopType) throws Exception{
@@ -476,7 +515,6 @@ public class WxRentContractController extends WxContractBaseController {
* @return * @return
*/ */
@PostMapping("buildBillPriceList") @PostMapping("buildBillPriceList")
@SystemControllerLog(description = "租赁合同-生成账单列表金额")
public ResultData buildBillPriceList(@RequestBody WxRentContract wxRentContract) throws Exception{ public ResultData buildBillPriceList(@RequestBody WxRentContract wxRentContract) throws Exception{
logger.debug("[" + getIpAddr() + "] WxRentContractController::buildBillPriceList"); logger.debug("[" + getIpAddr() + "] WxRentContractController::buildBillPriceList");
WxRentContract dbRent = wxRentContractMapper.selectById(wxRentContract.getId()); WxRentContract dbRent = wxRentContractMapper.selectById(wxRentContract.getId());
@@ -599,13 +637,7 @@ public class WxRentContractController extends WxContractBaseController {
return wxRentContractService.getContractByContractNumber(wxRentContract); 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);
}

} }




+ 0
- 14
mallinkAdmin/src/main/java/com/iformall/controller/workflow/WxFlowAbleController.java 파일 보기

@@ -236,20 +236,6 @@ public class WxFlowAbleController extends BaseController {
wxFlowModel.updateTenantInfo(getTenantInfo()); wxFlowModel.updateTenantInfo(getTenantInfo());
return new ResultData(wxFlowService.getModelBybusiness(wxFlowModel)); 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<WxFlowModel> models = wxFlowService.getModelBybusiness(wxFlowModel);
if (null != models && models.size() > 0 ) {
return 1;
}else {
return 0;
}
}


/** /**
* 配置列表 * 配置列表


+ 8
- 1
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 com.iformall.domain.po.WxPropertyContract;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

import org.apache.ibatis.annotations.Param;

import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;


@@ -55,7 +58,7 @@ public interface WxPropertyContractService {


//Object getRentContractStatusInfo(WxPropertyContract record); //Object getRentContractStatusInfo(WxPropertyContract record);


ResultData endRentContract(Long id);
//ResultData endRentContract(Long id);


//Object getRentContractList(WxPropertyContract record); //Object getRentContractList(WxPropertyContract record);


@@ -81,5 +84,9 @@ public interface WxPropertyContractService {
ResultData apply(WxPropertyContract wxPropertyContract,MallUserInfo user); ResultData apply(WxPropertyContract wxPropertyContract,MallUserInfo user);
void outDateContract(WxMall wxMall); void outDateContract(WxMall wxMall);
WxPropertyContract getSimpleDetail(@Param("id") Long id);
void updatePropertyContract(WxPropertyContract record);


} }

+ 7
- 0
mallinkService/src/main/java/com/iformall/service/WxRentContractService.java 파일 보기

@@ -112,4 +112,11 @@ public interface WxRentContractService {
WxRentContract getSimpleDeatil(Long id); WxRentContract getSimpleDeatil(Long id);
/**
* 查询合同的店铺是否已经在其他有效合同里面了
* @param wxRentContract
* @return
*/
boolean hasOtherValidContractShop(WxRentContract wxRentContract);
} }

+ 12
- 26
mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java 파일 보기

@@ -912,31 +912,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
// return resultData; // 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 // @Override
// public Object getRentContractList(WxPropertyContract record) { // public Object getRentContractList(WxPropertyContract record) {
// Map<String, Object> params = new HashMap<>(); // Map<String, Object> params = new HashMap<>();
@@ -1128,7 +1103,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
if ((EnumRentContractStatus.DRAFT.getCode().intValue() == rentContract.getStatus().intValue() if ((EnumRentContractStatus.DRAFT.getCode().intValue() == rentContract.getStatus().intValue()
&& EnumRentContractAppStatus.DEFAULT.getCode().intValue() == rentContract.getApplyStatus().intValue()) && EnumRentContractAppStatus.DEFAULT.getCode().intValue() == rentContract.getApplyStatus().intValue())
|| (EnumRentContractStatus.PERFORMANCE.getCode().intValue() == rentContract.getStatus().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"); Integer bussinessType = (Integer) rentContract.getFlowParams().get("businessType");
if (null == bussinessType) { 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);
}
} }






+ 42
- 22
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java 파일 보기

@@ -728,6 +728,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
Date tempDate = record.getRentalStartDate(); Date tempDate = record.getRentalStartDate();
record.setRentalStartDate(oldRentStartDate); record.setRentalStartDate(oldRentStartDate);
record.setShopName(shopName); record.setShopName(shopName);
record.setStatus(wxRentContract.getStatus());
wxRentContractMapper.updateById(record); wxRentContractMapper.updateById(record);
record.setRentalStartDate(tempDate); record.setRentalStartDate(tempDate);
} catch (Exception e) { } catch (Exception e) {
@@ -1111,15 +1112,15 @@ public class WxRentContractServiceImpl implements WxRentContractService {
} }


int month = 12; 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; int billcount = 0;
List<WxBillRent> resultList = new ArrayList<>(); List<WxBillRent> resultList = new ArrayList<>();
@@ -2451,44 +2452,40 @@ public class WxRentContractServiceImpl implements WxRentContractService {
} }


@Override @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) { if (null != count && count.intValue()>0) {
return new ResultData(Result.ERROR, "当前存在其他草稿状态或者履约驳回的合同。清作废再提交审批。"); 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())) { if (CollectionUtils.isEmpty(rentContract.getFlowParams())) {
return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]租金合同没有审批流程.");
return new ResultData(Result.ERROR, "编号["+rentContract.getId()+"]租金合同没有审批流程.");
} }
if (rentContract.getMerchantId() == null) { 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() if ((EnumRentContractStatus.DRAFT.getCode().intValue() == rentContract.getStatus().intValue()
&& EnumRentContractAppStatus.DEFAULT.getCode().intValue() == rentContract.getApplyStatus().intValue()) && EnumRentContractAppStatus.DEFAULT.getCode().intValue() == rentContract.getApplyStatus().intValue())
|| (EnumRentContractStatus.PERFORMANCE.getCode().intValue() == rentContract.getStatus().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"); Integer bussinessType = (Integer) rentContract.getFlowParams().get("businessType");
if (null == bussinessType) { 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); WxFlowModel flowModle = wxFlowService.getModelByType(bussinessType, rentContract);
if (null == flowModle) { 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()); rentContract.getFlowParams().put("businessId", rentContract.getId().toString());
wxFlowService.start(rentContract.getFlowParams(), user.getId(), user.getName(), rentContract); wxFlowService.start(rentContract.getFlowParams(), user.getId(), user.getName(), rentContract);
return new ResultData(Result.SUCCESS,"提交审批成功",rentContract); return new ResultData(Result.SUCCESS,"提交审批成功",rentContract);
}else { }else {
return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]租金合同状态不能提交审批.允许提交的状态为 [草稿+未提交审批],[履约中+审批驳回]");
return new ResultData(Result.ERROR, "编号["+rentContract.getId()+"]租金合同状态不能提交审批.允许提交的状态为 [草稿+未提交审批],[履约中+审批驳回]");
} }
} }


@@ -2550,4 +2547,27 @@ public class WxRentContractServiceImpl implements WxRentContractService {
public WxRentContract getSimpleDeatil(Long id) { public WxRentContract getSimpleDeatil(Long id) {
return wxRentContractMapper.selectById(id); return wxRentContractMapper.selectById(id);
} }

@Override
public boolean hasOtherValidContractShop(WxRentContract wxRentContract) {
WxRentContract wrc = new WxRentContract();
wrc.setMerchantId(wxRentContract.getMerchantId());
List<Integer> validstatuss = new ArrayList<Integer>();
validstatuss.add(EnumRentContractStatus.PAING.getCode());
validstatuss.add(EnumRentContractStatus.READY_FOR_PAING.getCode());
wrc.setStatuss(validstatuss);
List<WxRentContract> 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;
}
} }

불러오는 중...
취소
저장