java110
2022-03-31 aadd9096f633c3f1a9c1fc895a68d2ada586de85
优化删除业主为 cmd 模式
4个文件已修改
1个文件已添加
165 ■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/contract/ContractDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-utils/src/main/java/com/java110/utils/util/FlowUtil.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/smo/impl/ContractApplyUserInnerServiceSMOImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/smo/impl/WorkflowV1InnerServiceSMOImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/contract/ContractDto.java
@@ -84,6 +84,10 @@
    private String communityId;
    private String hasAudit;
    private String hasEnd;
    private List<ContractAttrDto> attrs;
    public String getaLink() {
@@ -461,4 +465,20 @@
    public void setNextUserId(String nextUserId) {
        this.nextUserId = nextUserId;
    }
    public String getHasAudit() {
        return hasAudit;
    }
    public void setHasAudit(String hasAudit) {
        this.hasAudit = hasAudit;
    }
    public String getHasEnd() {
        return hasEnd;
    }
    public void setHasEnd(String hasEnd) {
        this.hasEnd = hasEnd;
    }
}
java110-utils/src/main/java/com/java110/utils/util/FlowUtil.java
New file
@@ -0,0 +1,44 @@
package com.java110.utils.util;
import java.util.Map;
public class FlowUtil {
    /**
     * el表达式判断
     *
     * @param expression
     * @param vars
     * @return
     */
    public static boolean isCondition(String expression, Map<String, Object> vars) {
        if (expression == null || expression == "") {
            return false;
        }
        //分割表达式
        String[] exprArr = expression.split("[{}$&]");
        for (String expr : exprArr) {
            //是否包含键message
            if (expr.contains("flag")) {
                if (!vars.containsKey("flag")) {
                    continue;
                }
                if (expr.contains("==")) {
                    String[] primes = expr.split("==");
                    String valExpr = primes[1].trim();
                    if (valExpr.startsWith("'")) {
                        valExpr = valExpr.substring(1);
                    }
                    if (valExpr.endsWith("'")) {
                        valExpr = valExpr.substring(0, valExpr.length() - 1);
                    }
                    if (primes.length == 2 && valExpr.equals(vars.get("flag"))) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
}
service-common/src/main/java/com/java110/common/smo/impl/ContractApplyUserInnerServiceSMOImpl.java
@@ -11,11 +11,10 @@
import com.java110.intf.store.IContractInnerServiceSMO;
import com.java110.po.contract.ContractPo;
import com.java110.utils.util.Assert;
import com.java110.utils.util.FlowUtil;
import com.java110.utils.util.StringUtil;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.bpmn.model.*;
import org.activiti.engine.*;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
@@ -51,7 +50,8 @@
    @Autowired
    private IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl;
    @Autowired
    private RepositoryService repositoryService;
    /**
     * 启动流程
@@ -120,6 +120,46 @@
            String business_key = pi.getBusinessKey();
            contractIds.add(business_key);
            taskBusinessKeyMap.put(business_key, task.getId());
            //计算是否有 审核按钮
            BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
            FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(task.getTaskDefinitionKey());
            //获取当前节点输出连线
            List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows();
            //计算是否有结束按钮
            boolean isReturn;
            for (SequenceFlow outgoingFlow : outgoingFlows) {
                //获取输出节点元素
                FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement();
                isReturn = false;
                //排除非用户任务接点
                if (targetFlowElement instanceof UserTask) {
                    //判断输出节点的el表达式
                    Map vars = new HashMap();
                    vars.put("flag", "false"); // 1100
                    if (FlowUtil.isCondition(outgoingFlow.getConditionExpression(), vars)) {
                        isReturn = true;
                    }
                    if (!isReturn) {
                        String assignee = ((UserTask) targetFlowElement).getAssignee();
                        if (!StringUtil.isEmpty(assignee) && assignee.indexOf("${") < 0) {
                            taskBusinessKeyMap.put(business_key+"_hasAudit", task.getId());
                        }
                        if ("${startUserId}".equals(assignee)) {
                            taskBusinessKeyMap.put(business_key+"_hasAudit", task.getId());
                        }
                        if ("${nextUserId}".equals(assignee)) {
                            taskBusinessKeyMap.put(business_key+"_hasAudit", task.getId());
                        }
                    }
                }
                //如果下一个为 结束节点
                if (targetFlowElement instanceof EndEvent) {
                    //true 获取输出节点名称
                    taskBusinessKeyMap.put(business_key+"_hasEnd", task.getId());
                }
            }
        }
        if (contractIds == null || contractIds.size() == 0) {
@@ -134,6 +174,8 @@
        for (ContractDto tmpContractDto : tmpContractDtos) {
            tmpContractDto.setTaskId(taskBusinessKeyMap.get(tmpContractDto.getContractId()));
            tmpContractDto.setHasAudit(taskBusinessKeyMap.get(tmpContractDto.getContractId()+"_hasAudit"));
            tmpContractDto.setHasEnd(taskBusinessKeyMap.get(tmpContractDto.getContractId()+"_hasEnd"));
        }
        return tmpContractDtos;
    }
service-common/src/main/java/com/java110/common/smo/impl/WorkflowV1InnerServiceSMOImpl.java
@@ -24,6 +24,7 @@
import com.java110.intf.common.IWorkflowV1InnerServiceSMO;
import com.java110.po.workflow.WorkflowPo;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.FlowUtil;
import com.java110.utils.util.StringUtil;
import org.activiti.bpmn.model.*;
import org.activiti.engine.ProcessEngine;
@@ -136,7 +137,7 @@
                //判断输出节点的el表达式
                Map vars = new HashMap();
                vars.put("flag", "false"); // 1100
                if (isCondition(outgoingFlow.getConditionExpression(), vars)) {
                if (FlowUtil.isCondition(outgoingFlow.getConditionExpression(), vars)) {
                    isReturn = true;
                }
                if (!isReturn) {
@@ -162,42 +163,6 @@
        return tasks;
    }
    /**
     * el表达式判断
     *
     * @param expression
     * @param vars
     * @return
     */
    private static boolean isCondition(String expression, Map<String, Object> vars) {
        if (expression == null || expression == "") {
            return false;
        }
        //分割表达式
        String[] exprArr = expression.split("[{}$&]");
        for (String expr : exprArr) {
            //是否包含键message
            if (expr.contains("flag")) {
                if (!vars.containsKey("flag")) {
                    continue;
                }
                if (expr.contains("==")) {
                    String[] primes = expr.split("==");
                    String valExpr = primes[1].trim();
                    if (valExpr.startsWith("'")) {
                        valExpr = valExpr.substring(1);
                    }
                    if (valExpr.endsWith("'")) {
                        valExpr = valExpr.substring(0, valExpr.length() - 1);
                    }
                    if (primes.length == 2 && valExpr.equals(vars.get("flag"))) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
}
service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java
@@ -24,7 +24,6 @@
import com.java110.po.contract.ContractPo;
import com.java110.po.contractAttr.ContractAttrPo;
import com.java110.po.contractChangePlan.ContractChangePlanPo;
import com.java110.po.contractChangePlanRoom.ContractChangePlanRoomPo;
import com.java110.po.contractFile.ContractFilePo;
import com.java110.po.contractRoom.ContractRoomPo;
import com.java110.po.owner.OwnerRoomRelPo;
@@ -37,7 +36,6 @@
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
import org.apache.http.annotation.Contract;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@@ -108,7 +106,7 @@
        deleteContractFileBMOImpl.delete(contractFilePo);
        List<ContractFilePo> filePos = contractPo.getContractFilePo();
        if(filePos != null) {
        if (filePos != null) {
            for (ContractFilePo file : filePos) {
                if (file.getFileRealName().length() > 0 && file.getFileSaveName().length() > 0) {
                    file.setContractId(contractPo.getContractId());
@@ -161,6 +159,9 @@
            ContractPo contractPo = new ContractPo();
            contractPo.setContractId(contractDto.getContractId());
            contractPo.setState(ContractDto.STATE_AUDIT_DOING);
            if ("1200".equals(reqJson.getString("state"))) {
                contractPo.setState(ContractDto.STATE_FAIL);
            }
            contractPo.setStatusCd(StatusConstant.STATUS_CD_VALID);
            contractInnerServiceSMOImpl.updateContract(contractPo);
        }
@@ -204,7 +205,7 @@
            ContractPo contractPo = BeanConvertUtil.covertBean(contractChangePlanDetailDtos.get(0), ContractPo.class);
            contractInnerServiceSMOImpl.updateContract(contractPo);
            dealContractChangePlanRoom(contractChangePlanDto,contractDtos.get(0));
            dealContractChangePlanRoom(contractChangePlanDto, contractDtos.get(0));
        } else { //修改为审核中
            ContractChangePlanPo contractChangePlanPo = new ContractChangePlanPo();
@@ -390,6 +391,7 @@
        return false;
    }
    private void updateContractAttr(JSONObject jsonObject, ContractPo contractPo) {
        ContractAttrDto contractAttrDto = new ContractAttrDto();
        contractAttrDto.setContractId(contractPo.getContractId());