Преглед изворни кода

优化删除业主为 cmd 模式

java110 пре 4 година
родитељ
комит
aadd9096f6

+ 20 - 0
java110-bean/src/main/java/com/java110/dto/contract/ContractDto.java

@@ -84,6 +84,10 @@ public class ContractDto extends PageDto implements Serializable {
 
     private String communityId;
 
+    private String hasAudit;
+
+    private String hasEnd;
+
     private List<ContractAttrDto> attrs;
 
     public String getaLink() {
@@ -461,4 +465,20 @@ public class ContractDto extends PageDto implements Serializable {
     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;
+    }
 }

+ 44 - 0
java110-utils/src/main/java/com/java110/utils/util/FlowUtil.java

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

+ 47 - 5
service-common/src/main/java/com/java110/common/smo/impl/ContractApplyUserInnerServiceSMOImpl.java

@@ -11,11 +11,10 @@ import com.java110.intf.common.IWorkflowInnerServiceSMO;
 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 @@ public class ContractApplyUserInnerServiceSMOImpl extends BaseServiceSMO impleme
 
     @Autowired
     private IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl;
-
+    @Autowired
+    private RepositoryService repositoryService;
 
     /**
      * 启动流程
@@ -120,6 +120,46 @@ public class ContractApplyUserInnerServiceSMOImpl extends BaseServiceSMO impleme
             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 @@ public class ContractApplyUserInnerServiceSMOImpl extends BaseServiceSMO impleme
 
         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;
     }

+ 2 - 37
service-common/src/main/java/com/java110/common/smo/impl/WorkflowV1InnerServiceSMOImpl.java

@@ -24,6 +24,7 @@ import com.java110.dto.workflow.WorkflowDto;
 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 @@ public class WorkflowV1InnerServiceSMOImpl extends BaseServiceSMO implements IWo
                 //判断输出节点的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 @@ public class WorkflowV1InnerServiceSMOImpl extends BaseServiceSMO implements IWo
         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;
-    }
 
 }

+ 6 - 4
service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java

@@ -24,7 +24,6 @@ import com.java110.intf.user.IRentingPoolInnerServiceSMO;
 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.Assert;
 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 @@ public class UpdateContractBMOImpl implements IUpdateContractBMO {
         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 @@ public class UpdateContractBMOImpl implements IUpdateContractBMO {
             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 @@ public class UpdateContractBMOImpl implements IUpdateContractBMO {
             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 @@ public class UpdateContractBMOImpl implements IUpdateContractBMO {
 
         return false;
     }
+
     private void updateContractAttr(JSONObject jsonObject, ContractPo contractPo) {
         ContractAttrDto contractAttrDto = new ContractAttrDto();
         contractAttrDto.setContractId(contractPo.getContractId());