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

feature(审批服务撤回操作通知权限中心): 审批服务撤回操作通知权限中心

审批服务撤回操作通知权限中心
mazq пре 4 година
родитељ
комит
b7769d66ac

+ 65 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/enumresources/ApproveResultEnum.java

@@ -0,0 +1,65 @@
+package com.dragoninfo.dcuc.auth.auth.enumresources;
+
+/**
+ * 审批服务处理结果枚举类
+ * @author mazq
+ * @date 2021/5/13
+ */
+public enum  ApproveResultEnum {
+    /**
+     * 完成(同意)
+     */
+    COMPLETE_AGREE("complete-agree", "完成(同意)"),
+
+    /**
+     * 完成(不同意)
+     */
+    COMPLETE_DISAGREE("complete-disagree", "完成(不同意)"),
+
+    /**
+     * 退回
+     */
+    BACK("back", "退回"),
+
+    /**
+     * 撤回
+     */
+    RECALL("recall", "撤回");
+
+    private String label;
+    private String value;
+
+    public static ApproveResultEnum getByValue(String value){
+        for (ApproveResultEnum approveResultEnum : ApproveResultEnum.values()) {
+            if(approveResultEnum.getValue().equals(value)){
+                return approveResultEnum;
+            }
+        }
+        return null;
+    }
+
+
+    ApproveResultEnum(String value, String label) {
+        this.value = value;
+        this.label = label;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+
+
+}

+ 15 - 6
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/enumresources/WorkFlowStatusEnum.java

@@ -10,22 +10,31 @@ public enum WorkFlowStatusEnum {
      * 申请中
      */
     APPLYING("0", "申请中"),
+
     /**
      * 待审批
      */
     TO_BE_APPROVED("1", "待审批"),
+
     /**
-     * 撤销中
+     * 驳回(流程未走完)
      */
-    CANCLEING("2", "撤销中"),
+    ROLL_BACK("2", "驳回"),
+
     /**
-     * 撤销
+     * 撤销
      */
-    CANCLED("3", "已撤销"),
+    CANCEL("3", "撤销"),
+
+    /**
+     * 同意
+     */
+    SUCCESS("4", "同意"),
+
     /**
-     * 审批完成
+     * 不同意(流程走完)
      */
-    SUCCESS("4", "审批通过");
+    FAIL("5","不同意");
 
     private String label;
     private String value;

+ 2 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/business/impl/ServiceAuthBusinessImpl.java

@@ -77,7 +77,8 @@ public class ServiceAuthBusinessImpl implements IServiceAuthBusiness {
             logger.info("dealAuthFlowResult>>get work flow null,message id:{}",messageId);
             return false;
         }
-        if (WorkFlowStatusEnum.SUCCESS.getValue().equals(flow.getFlowStatus())) {
+        //幂等性
+        if (!WorkFlowStatusEnum.APPLYING.getValue().equals(flow.getFlowStatus())) {
             return true;
         }
         flow.setRemark(dto.getRemark());

+ 25 - 2
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/msg/WorkFlowResultListener.java

@@ -3,6 +3,7 @@ package com.dragoninfo.dcuc.auth.msg;
 import com.alibaba.fastjson.JSON;
 import com.dragoninfo.dcuc.auth.auth.business.IServiceAuthBusiness;
 import com.dragoninfo.dcuc.auth.auth.dto.WorkFlowResutlAcceptDTO;
+import com.dragoninfo.dcuc.auth.auth.enumresources.ApproveResultEnum;
 import com.dragoninfo.dcuc.auth.auth.enumresources.WorkFlowStatusEnum;
 import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
 import com.dragonsoft.mq.client.model.entity.MessageInfoDTO;
@@ -49,15 +50,37 @@ public class WorkFlowResultListener {
                 logger.info("info set is empty");
                 return;
             }
+            String result = map.get("approveResult");
+            WorkFlowStatusEnum statusEnum = getStatusByApproveResult(result);
+            if(null == statusEnum){
+                logger.info("status enum is null");
+                return;
+            }
             WorkFlowResutlAcceptDTO dto = new WorkFlowResutlAcceptDTO();
-            dto.setApproveResult(WorkFlowStatusEnum.SUCCESS.getValue());
             dto.setMessageId(map.get("messageId"));
             dto.setProcessInstanceId(map.get("processInstanceId"));
-            logger.info("processDTO work flow id:{}, message id:{}", dto.getProcessInstanceId(), dto.getMessageId());
+            dto.setApproveResult(statusEnum.getValue());
+            logger.info("WorkFlowResultListener------ work flow dto:{}", JSON.toJSONString(dto));
             serviceAuthBusiness.dealAuthFlowResult(dto);
         } catch (Exception e) {
             logger.error("receiveMessage error.", e);
         }
     }
 
+    private WorkFlowStatusEnum getStatusByApproveResult(String result) {
+        ApproveResultEnum approveResultEnum = ApproveResultEnum.getByValue(result);
+        switch (approveResultEnum){
+            case BACK:
+                return WorkFlowStatusEnum.ROLL_BACK;
+            case RECALL:
+                return WorkFlowStatusEnum.CANCEL;
+            case COMPLETE_AGREE:
+                return WorkFlowStatusEnum.SUCCESS;
+            case COMPLETE_DISAGREE:
+                return WorkFlowStatusEnum.FAIL;
+            default:
+                return null;
+        }
+    }
+
 }