Browse Source

fix

release_toaliyun_real
xiaohanzi 5 years ago
parent
commit
df3d5df982
4 changed files with 109 additions and 30 deletions
  1. +24
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java
  2. +48
    -18
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java
  3. +7
    -0
      mallinkService/src/main/java/com/iformall/service/WxRentContractService.java
  4. +30
    -12
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 24
- 0
mallinkAdmin/src/main/java/com/iformall/controller/contract/WxContractBaseController.java View File

@@ -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<String,Object> generateFlowParams(EnumFlowKey flowType,EnumFlowContractType contractType,String remark,Long contractId) {
Map<String,Object> map = new HashMap<String,Object>();
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<WxFlowModel> flows = wxFlowService.getModelBybusiness(wxFlowModel);
if (null != flows && flows.size() > 0) {
return true;
}
return false;
}
}

+ 48
- 18
mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java View File

@@ -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<Long> 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);
}

}



+ 7
- 0
mallinkService/src/main/java/com/iformall/service/WxRentContractService.java View File

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

+ 30
- 12
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java View File

@@ -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<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;
}
}

Loading…
Cancel
Save