LAPTOP-FO2T5SIU\35838 6 月之前
父節點
當前提交
7acc6a42bd

+ 7 - 209
pro-base/src/main/java/com/idea/oa/apply/controller/ApplyPaymentSettleController.java

@@ -79,13 +79,7 @@ public class ApplyPaymentSettleController extends BaseController {
     @Autowired
     private ParkWaitHandleService parkWaitHandleService;
 
-    @Value("${serverUrl}")
-    private String serverUrl;
-    @Value("${ssoKey}")
-    private String ssoKey;
 
-    @Autowired
-    private FramePermissionService framePermissionService;
 
     /**
      * 付款记录编号 : 付款领用单20240401-002
@@ -132,23 +126,7 @@ public class ApplyPaymentSettleController extends BaseController {
             }
         }
 
-        String waitUrl = "";
-        // 查询待办页面的 菜单id
-        FramePermissionExample framePermissionExample = new FramePermissionExample();
-        framePermissionExample.createCriteria().andNameEqualTo("流程审批");
-        List<FramePermission> framePermissions = framePermissionService.selectByExample(framePermissionExample);
-        if (CollectionUtils.isNotEmpty(framePermissions)) {
-            String menuIndex = framePermissions.get(0).getId();
-            FramePermissionExample permissionExample = new FramePermissionExample();
-            permissionExample.createCriteria().andNameEqualTo("付款审批流程");
-            List<FramePermission> permissions = framePermissionService.selectByExample(framePermissionExample);
-            if (CollectionUtils.isNotEmpty(permissions)){
-                String subMenu = permissions.get(0).getId();
-                waitUrl = "/backstage?menuIndex=" + menuIndex  + "&subMenu=" + subMenu;
-            }
-
-        }
-
+        String waitUrl = modelService.getWaitUrl();
         FlowMain flowMain = flowMainService.selectByPrimaryKey(flowMainPush.getFlowMainId());
         String flowId = flowMain.getId();
         // 进行审核操作后 就要处理待办 清除数据
@@ -165,79 +143,12 @@ public class ApplyPaymentSettleController extends BaseController {
                 isEnd = true;
                 isAgree = true;
             } else {
-
-                try {
-                    FlowMainPushExample flowMainPushExample = new FlowMainPushExample();
-                    flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0);
-                    List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample);
-                    if (CollectionUtils.isNotEmpty(flowMainPushes)) {
-                        FlowMainPush push = flowMainPushes.get(0);
-
-                        // 给本系统下一个节点的人推送待办
-                        /**
-                         * 添加待办
-                         * @param title 显示标题
-                         * @param typeEnum 处理类型枚举
-                         * @param srcUserType 来源用户类型 0管理,1企业
-                         * @param srcUserId 来源用户id
-                         * @param srcUserName 来源用户名称
-                         * @param receiveUserId 接收用户id or 0=全部  or 角色id
-                         * @param routeParam 跳转携带参数,例: id=***&type=**
-                         */
-                        String title = flowMain.getApplyTheme();
-                        HandleTypeEnum typeEnum = HandleTypeEnum.FK;
-                        Integer srcUserType = 0;//来源用户类型 0管理,1企业
-                        String srcUserId = ShiroUtils.getUserId();
-                        String srcUserName = ShiroUtils.getUser().getTruename();
-                        String receiveUserId = push.getPushUser();
-                        String routeParam = "id=" + flowId + "&flowMainPushId=" + push.getId() + "&applyUser=" + flowMain.getApplyUser();
-                        HandleTypeEnum.FK.setUrl(waitUrl);
-                        parkWaitHandleService.addHandle(title, typeEnum, srcUserType, srcUserId, srcUserName, receiveUserId, routeParam);
-
-                        // TODO: 2024/11/21 和泛微对接 推送信息
-                        FrameUser  receiveUser = frameUserService.selectByPrimaryKey(receiveUserId);
-                        String username = encryptUsername(receiveUser.getUsername());
-                        String syscode = "AJ";
-                        String requestname = flowMain.getApplyTheme();
-                        String workflowname = ConstantFlowType.PAYMENT_NAME;
-                        String nodeName = flowMainPush.getNodeName();
-                        String pcurl = serverUrl + "&loginid=" + username;
-                        String appurl = "";
-                        String isremark = "0";
-                        String viewtype = "0";
-                        // TODO: 2024/11/15 创建者和接收者需求oa协商
-                        String creator = "ceshi";
-                        String receiver = "ceshi";
-                        String date = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date());
-                        String receivets = System.currentTimeMillis() + "";
-
-                        Map map = new HashMap<String, Object>();
-                        map.put("syscode", syscode);
-                        map.put("flowid", flowId);
-                        map.put("requestname", requestname);
-                        map.put("workflowname", workflowname);
-                        map.put("nodeName", nodeName);
-                        map.put("pcurl", pcurl);
-                        map.put("appurl", appurl);
-                        map.put("creator", creator);
-                        map.put("createdatetime", date);
-                        map.put("receiver", receiver);
-                        map.put("receivedatetime", date);
-                        map.put("isremark", isremark);
-                        map.put("viewtype", viewtype);
-                        map.put("receivets", receivets);
-
-                        log.info("泛微推送详情:{}", map);
-                        String result = OAUtil.receiveRequestInfoByJson(map);
-                        log.info("泛微推送结果:{}", result);
-
-                    }
-                } catch (Exception e) {
-                    log.error("推送异常", e);
-                }
-
-
+                modelService.pushOaAndHandle(flowMainPush, flowMain, waitUrl);
             }
+        } else if (addConfirmResult.getConfirmResult().equals("2")) { // 退回发起人
+            modelService.pushOaAndHandle(flowMainPush, flowMain, waitUrl);
+        } else if (addConfirmResult.getConfirmResult().equals("3")) { // 退回上一节点
+            modelService.pushOaAndHandle(flowMainPush, flowMain, waitUrl);
         }
         //添加业务信息(将请假信息中的修改掉,剩余年假,剩余调休,冻结年假,冻结调休都修改掉)
         if (isEnd) {
@@ -319,108 +230,7 @@ public class ApplyPaymentSettleController extends BaseController {
         String applyTheme = "" + ShiroUtils.getUser().getTruename() + "的付款申请单";
         AjaxResult ajaxResult = flowMainService.doFlowMain(applyTheme, record.getId(), addSystemRemark, record.getCcList(), ConstantFlowType.PAYMENT_PROCESSDEFINE, ConstantFlowType.PAYMENT_DEPLOYMENTID, feeMoneyTotalMap, ConstantFlowType.PAYMENT_NAME, ConstantFlowType.PAYMENT, ShiroUtils.getUser());
 
-        try {
-
-            String flowId = "";
-            String nodeName = "";
-
-            FlowMainExample flowMainExample = new FlowMainExample();
-            flowMainExample.createCriteria().andFormIdEqualTo(id).andFlowTypeEqualTo(ConstantFlowType.PAYMENT);
-            List<FlowMain> flowMains = flowMainService.selectByExample(flowMainExample);
-            if (CollectionUtils.isNotEmpty(flowMains)) {
-                FlowMain flowMain = flowMains.get(0);
-                flowId = flowMain.getId();
-
-                FlowMainPushExample flowMainPushExample = new FlowMainPushExample();
-                flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0);
-                List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample);
-                if (CollectionUtils.isNotEmpty(flowMainPushes)) {
-                    FlowMainPush flowMainPush = flowMainPushes.get(0);
-                    nodeName = flowMainPush.getNodeName();
-
-                    // 给本系统下一个节点的人推送待办
-                    /**
-                     * 添加待办
-                     * @param title 显示标题
-                     * @param typeEnum 处理类型枚举
-                     * @param srcUserType 来源用户类型 0管理,1企业
-                     * @param srcUserId 来源用户id
-                     * @param srcUserName 来源用户名称
-                     * @param receiveUserId 接收用户id or 0=全部  or 角色id
-                     * @param routeParam 跳转携带参数,例: id=***&type=**
-                     */
-
-                    String waitUrl = "";
-                    // 查询待办页面的 菜单id
-                    FramePermissionExample framePermissionExample = new FramePermissionExample();
-                    framePermissionExample.createCriteria().andNameEqualTo("流程审批");
-                    List<FramePermission> framePermissions = framePermissionService.selectByExample(framePermissionExample);
-                    if (CollectionUtils.isNotEmpty(framePermissions)) {
-                        String menuIndex = framePermissions.get(0).getId();
-                        FramePermissionExample permissionExample = new FramePermissionExample();
-                        permissionExample.createCriteria().andNameEqualTo("付款审批流程");
-                        List<FramePermission> permissions = framePermissionService.selectByExample(framePermissionExample);
-                        if (CollectionUtils.isNotEmpty(permissions)){
-                            String subMenu = permissions.get(0).getId();
-                            waitUrl = "/backstage?menuIndex=" + menuIndex  + "&subMenu=" + subMenu;
-                        }
-
-                    }
-
-                    String title = applyTheme;
-                    HandleTypeEnum typeEnum = HandleTypeEnum.FK;
-                    Integer srcUserType = 0;//来源用户类型 0管理,1企业
-                    String srcUserId = ShiroUtils.getUserId();
-                    String srcUserName = ShiroUtils.getUser().getTruename();
-                    String receiveUserId = flowMainPush.getPushUser();
-                    String routeParam = "id=" + flowId + "&flowMainPushId=" + flowMainPush.getId() + "&applyUser=" + flowMain.getApplyUser();
-                    HandleTypeEnum.FK.setUrl(waitUrl);
-                    parkWaitHandleService.addHandle(title, typeEnum, srcUserType, srcUserId, srcUserName, receiveUserId, routeParam);
-
-                    // TODO: 2024/11/21   和泛OA对接 推送待办
-                    FrameUser receiveUser = frameUserService.selectByPrimaryKey(receiveUserId);
-                    String username = encryptUsername(receiveUser.getUsername());
-                    String syscode = "AJ";
-                    String requestname = applyTheme;
-                    String workflowname = ConstantFlowType.PAYMENT_NAME;
-                    String pcurl = serverUrl + "&loginid=" + username;
-                    String appurl = "";
-                    String isremark = "0";
-                    String viewtype = "0";
-                    // TODO: 2024/11/15 创建者和接收者需求oa协商
-                    String creator = "ceshi";
-                    String receiver = "ceshi";
-                    String date = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date());
-                    String receivets = System.currentTimeMillis() + "";
-                    Map map = new HashMap<String, Object>();
-                    map.put("syscode", syscode);
-                    map.put("flowid", flowId);
-                    map.put("requestname", requestname);
-                    map.put("workflowname", workflowname);
-                    map.put("nodeName", nodeName);
-                    map.put("pcurl", pcurl);
-                    map.put("appurl", appurl);
-                    map.put("creator", creator);
-                    map.put("createdatetime", date);
-                    map.put("receiver", receiver);
-                    map.put("receivedatetime", date);
-                    map.put("isremark", isremark);
-                    map.put("viewtype", viewtype);
-                    map.put("receivets", receivets);
-
-                    log.info("泛微推送详情:{}", map);
-                    String result = OAUtil.receiveRequestInfoByJson(map);
-                    log.info("泛微推送结果:{}", result);
-
-                }
-
-            }
-
-        } catch (Exception e) {
-            log.error("推送异常", e);
-        }
-
-
+        modelService.startOaAndHandle(record.getId(), applyTheme);
         if (ajaxResult.get("code").equals(1688)) {
 //            //表成功了 且已经审核完成
 ////            需要进行后续的处理
@@ -561,18 +371,6 @@ public class ApplyPaymentSettleController extends BaseController {
 //    }
 
 
-    /**
-     * 加密用户名
-     * @param username
-     * @return
-     */
-    public String encryptUsername(String username){
-
-        byte[] key = Base64.decode(ssoKey);
-        // 构建
-        AES aes = SecureUtil.aes(key);
-        return aes.encryptHex(username);
-    }
 
 
 

+ 291 - 14
pro-base/src/main/java/com/idea/oa/apply/service/ApplyPaymentSettleService.java

@@ -1,5 +1,8 @@
 package com.idea.oa.apply.service;
 
+import cn.hutool.core.codec.Base64;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.symmetric.AES;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.idea.oa.apply.mapper.ApplyPaymentSettleExtendMapper;
@@ -7,21 +10,43 @@ import com.idea.oa.apply.mapper.ApplyPaymentSettleMapper;
 import com.idea.oa.apply.model.ApplyPaymentSettle;
 import com.idea.oa.apply.model.ApplyPaymentSettleExample;
 import com.idea.oa.apply.model.inout.ApplyPaymentSettleIn;
+import com.idea.oa.apply.util.constant.ConstantFlowType;
 import com.idea.oa.apply.util.constant.RedisToUse;
+import com.idea.oa.flow2.model.FlowMain;
+import com.idea.oa.flow2.model.FlowMainExample;
+import com.idea.oa.flow2.model.FlowMainPush;
+import com.idea.oa.flow2.model.FlowMainPushExample;
+import com.idea.oa.flow2.service.FlowMainPushService;
+import com.idea.oa.flow2.service.FlowMainService;
+import com.idea.util.DateUtils;
+import com.idea.util.OAUtil;
+import com.idea.workPanel.enume.HandleTypeEnum;
+import com.idea.workPanel.service.ParkWaitHandleService;
 import com.rockstar.common.base.BaseService;
 import com.rockstar.common.support.Convert;
+import com.rockstar.frame.model.FramePermission;
+import com.rockstar.frame.model.FramePermissionExample;
+import com.rockstar.frame.model.FrameUser;
 import com.rockstar.frame.model.extend.DateTrans;
 import com.rockstar.frame.model.extend.Tablepar;
+import com.rockstar.frame.service.FramePermissionService;
+import com.rockstar.frame.service.FrameUserService;
+import com.rockstar.shiro.util.ShiroUtils;
 import com.rockstar.util.UUIDUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+@Slf4j
 @Service
 public class ApplyPaymentSettleService implements BaseService<ApplyPaymentSettle, ApplyPaymentSettleExample> {
 
@@ -31,6 +56,20 @@ public class ApplyPaymentSettleService implements BaseService<ApplyPaymentSettle
 
     @Autowired
     private ApplyPaymentSettleExtendMapper ApplyPaymentSettleExtendMapper;
+    @Autowired
+    private FlowMainPushService flowMainPushService;
+    @Autowired
+    private FlowMainService flowMainService;
+    @Autowired
+    private ParkWaitHandleService parkWaitHandleService;
+    @Autowired
+    private FramePermissionService framePermissionService;
+    @Autowired
+    private FrameUserService frameUserService;
+    @Value("${serverUrl}")
+    private String serverUrl;
+    @Value("${ssoKey}")
+    private String ssoKey;
 
 
     /**
@@ -149,46 +188,284 @@ public class ApplyPaymentSettleService implements BaseService<ApplyPaymentSettle
 //    public static void main(String[] args) {
 //        System.out.println(new ApplyPaymentSettleService().getMaxNum());
 //    }
+
     /**
      * 付款记录编号 : 付款领用单20240401-002
+     *
      * @return
      */
-    public String getMaxNum(){
+    public String getMaxNum() {
         String maxnum = null;
         try {
-            int c=0;
-            while ("#".equals(RedisToUse.pmnumber)){
+            int c = 0;
+            while ("#".equals(RedisToUse.pmnumber)) {
                 try {
                     c++;
                     Thread.sleep(100);//等待毫秒
                 } catch (InterruptedException e) {
                     throw new RuntimeException(e);
                 }
-                if (c>=1000){
+                if (c >= 1000) {
                     break;
                 }
             }
             maxnum = RedisToUse.pmnumber;
-            RedisToUse.pmnumber="#";
-            if (maxnum==null){
+            RedisToUse.pmnumber = "#";
+            if (maxnum == null) {
                 maxnum = ApplyPaymentSettleExtendMapper.selectMaxNum();
             }
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-            String topName = "付款领用单"+sdf.format(new Date())+"-";
+            String topName = "付款领用单" + sdf.format(new Date()) + "-";
 //        20221111-04
             if (StringUtils.isEmpty(maxnum)) {
-                maxnum = topName+"001";
-            }else {
+                maxnum = topName + "001";
+            } else {
                 String substring = maxnum.substring(0, topName.length());
-                if (topName.equals(substring)){
-                    maxnum= RedisToUse.addNumber(topName, maxnum);
-                }else{
-                    maxnum = topName+"001";
+                if (topName.equals(substring)) {
+                    maxnum = RedisToUse.addNumber(topName, maxnum);
+                } else {
+                    maxnum = topName + "001";
                 }
             }
         } finally {
-            RedisToUse.pmnumber=maxnum;
+            RedisToUse.pmnumber = maxnum;
         }
         return maxnum;
     }
+
+    /**
+     * 发起流程 推送泛微和工作台待办
+     * @param id
+     * @param applyTheme
+     */
+    public void startOaAndHandle(String id,String applyTheme) {
+
+        try {
+
+            String flowId = "";
+            String nodeName = "";
+
+            FlowMainExample flowMainExample = new FlowMainExample();
+            flowMainExample.createCriteria().andFormIdEqualTo(id).andFlowTypeEqualTo(ConstantFlowType.PAYMENT);
+            List<FlowMain> flowMains = flowMainService.selectByExample(flowMainExample);
+            if (CollectionUtils.isNotEmpty(flowMains)) {
+                FlowMain flowMain = flowMains.get(0);
+                flowId = flowMain.getId();
+
+                FlowMainPushExample flowMainPushExample = new FlowMainPushExample();
+                flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0);
+                List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample);
+                if (CollectionUtils.isNotEmpty(flowMainPushes)) {
+                    FlowMainPush flowMainPush = flowMainPushes.get(0);
+                    nodeName = flowMainPush.getNodeName();
+
+                    // 给本系统下一个节点的人推送待办
+                    /**
+                     * 添加待办
+                     * @param title 显示标题
+                     * @param typeEnum 处理类型枚举
+                     * @param srcUserType 来源用户类型 0管理,1企业
+                     * @param srcUserId 来源用户id
+                     * @param srcUserName 来源用户名称
+                     * @param receiveUserId 接收用户id or 0=全部  or 角色id
+                     * @param routeParam 跳转携带参数,例: id=***&type=**
+                     */
+
+                    String waitUrl = "";
+                    // 查询待办页面的 菜单id
+                    FramePermissionExample framePermissionExample = new FramePermissionExample();
+                    framePermissionExample.createCriteria().andNameEqualTo("流程审批");
+                    List<FramePermission> framePermissions = framePermissionService.selectByExample(framePermissionExample);
+                    if (CollectionUtils.isNotEmpty(framePermissions)) {
+                        String menuIndex = framePermissions.get(0).getId();
+                        FramePermissionExample permissionExample = new FramePermissionExample();
+                        permissionExample.createCriteria().andNameEqualTo("付款审批流程");
+                        List<FramePermission> permissions = framePermissionService.selectByExample(framePermissionExample);
+                        if (CollectionUtils.isNotEmpty(permissions)) {
+                            String subMenu = permissions.get(0).getId();
+                            waitUrl = "/backstage?menuIndex=" + menuIndex + "&subMenu=" + subMenu;
+                        }
+
+                    }
+
+                    String title = applyTheme;
+                    HandleTypeEnum typeEnum = HandleTypeEnum.FK;
+                    Integer srcUserType = 0;//来源用户类型 0管理,1企业
+                    String srcUserId = ShiroUtils.getUserId();
+                    String srcUserName = ShiroUtils.getUser().getTruename();
+                    String receiveUserId = flowMainPush.getPushUser();
+                    String routeParam = "id=" + flowId + "&flowMainPushId=" + flowMainPush.getId() + "&applyUser=" + flowMain.getApplyUser();
+                    HandleTypeEnum.FK.setUrl(waitUrl);
+                    parkWaitHandleService.addHandle(title, typeEnum, srcUserType, srcUserId, srcUserName, receiveUserId, routeParam);
+
+                    // TODO: 2024/11/21   和泛OA对接 推送待办
+                    FrameUser receiveUser = frameUserService.selectByPrimaryKey(receiveUserId);
+                    String username = encryptUsername(receiveUser.getUsername());
+                    String syscode = "AJ";
+                    String requestname = applyTheme;
+                    String workflowname = ConstantFlowType.PAYMENT_NAME;
+                    String pcurl = serverUrl + "&loginid=" + username;
+                    String appurl = "";
+                    String isremark = "0";
+                    String viewtype = "0";
+                    // TODO: 2024/11/15 创建者和接收者需求oa协商
+                    String creator = "ceshi";
+                    String receiver = "ceshi";
+                    String date = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date());
+                    String receivets = System.currentTimeMillis() + "";
+                    Map map = new HashMap<String, Object>();
+                    map.put("syscode", syscode);
+                    map.put("flowid", flowId);
+                    map.put("requestname", requestname);
+                    map.put("workflowname", workflowname);
+                    map.put("nodeName", nodeName);
+                    map.put("pcurl", pcurl);
+                    map.put("appurl", appurl);
+                    map.put("creator", creator);
+                    map.put("createdatetime", date);
+                    map.put("receiver", receiver);
+                    map.put("receivedatetime", date);
+                    map.put("isremark", isremark);
+                    map.put("viewtype", viewtype);
+                    map.put("receivets", receivets);
+
+                    log.info("泛微推送详情:{}", map);
+                    String result = OAUtil.receiveRequestInfoByJson(map);
+                    log.info("泛微推送结果:{}", result);
+
+                }
+
+            }
+
+        } catch (Exception e) {
+            log.error("推送异常", e);
+        }
+    }
+
+
+    /**
+     * 推送泛微和工作台待办
+     *
+     * @param flowMainPush
+     * @param flowMain
+     * @param waitUrl
+     */
+    public void pushOaAndHandle(FlowMainPush flowMainPush, FlowMain flowMain, String waitUrl) {
+
+        try {
+            String flowId = flowMain.getId();
+            FlowMainPushExample flowMainPushExample = new FlowMainPushExample();
+            flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0);
+            List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample);
+            if (CollectionUtils.isNotEmpty(flowMainPushes)) {
+                FlowMainPush push = flowMainPushes.get(0);
+
+                // 给本系统下一个节点的人推送待办
+                /**
+                 * 添加待办
+                 * @param title 显示标题
+                 * @param typeEnum 处理类型枚举
+                 * @param srcUserType 来源用户类型 0管理,1企业
+                 * @param srcUserId 来源用户id
+                 * @param srcUserName 来源用户名称
+                 * @param receiveUserId 接收用户id or 0=全部  or 角色id
+                 * @param routeParam 跳转携带参数,例: id=***&type=**
+                 */
+                String title = flowMain.getApplyTheme();
+                HandleTypeEnum typeEnum = HandleTypeEnum.FK;
+                Integer srcUserType = 0;//来源用户类型 0管理,1企业
+                String srcUserId = ShiroUtils.getUserId();
+                String srcUserName = ShiroUtils.getUser().getTruename();
+                String receiveUserId = push.getPushUser();
+                String routeParam = "id=" + flowId + "&flowMainPushId=" + push.getId() + "&applyUser=" + flowMain.getApplyUser();
+                HandleTypeEnum.FK.setUrl(waitUrl);
+                parkWaitHandleService.addHandle(title, typeEnum, srcUserType, srcUserId, srcUserName, receiveUserId, routeParam);
+
+                // TODO: 2024/11/21 和泛微对接 推送信息
+                FrameUser receiveUser = frameUserService.selectByPrimaryKey(receiveUserId);
+                String username = encryptUsername(receiveUser.getUsername());
+                String syscode = "AJ";
+                String requestname = flowMain.getApplyTheme();
+                String workflowname = ConstantFlowType.PAYMENT_NAME;
+                String nodeName = flowMainPush.getNodeName();
+                String pcurl = serverUrl + "&loginid=" + username;
+                String appurl = "";
+                String isremark = "0";
+                String viewtype = "0";
+                // TODO: 2024/11/15 创建者和接收者需求oa协商
+                String creator = "ceshi";
+                String receiver = "ceshi";
+                String date = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date());
+                String receivets = System.currentTimeMillis() + "";
+
+                Map map = new HashMap<String, Object>();
+                map.put("syscode", syscode);
+                map.put("flowid", flowId);
+                map.put("requestname", requestname);
+                map.put("workflowname", workflowname);
+                map.put("nodeName", nodeName);
+                map.put("pcurl", pcurl);
+                map.put("appurl", appurl);
+                map.put("creator", creator);
+                map.put("createdatetime", date);
+                map.put("receiver", receiver);
+                map.put("receivedatetime", date);
+                map.put("isremark", isremark);
+                map.put("viewtype", viewtype);
+                map.put("receivets", receivets);
+
+                log.info("泛微推送详情:{}", map);
+                String result = OAUtil.receiveRequestInfoByJson(map);
+                log.info("泛微推送结果:{}", result);
+
+            }
+        } catch (Exception e) {
+            log.error("推送异常", e);
+        }
+
+    }
+
+
+    /**
+     * 获取待办页面的url
+     *
+     * @return
+     */
+    public String getWaitUrl() {
+
+        String waitUrl = "";
+        // 查询待办页面的 菜单id
+        FramePermissionExample framePermissionExample = new FramePermissionExample();
+        framePermissionExample.createCriteria().andNameEqualTo("流程审批");
+        List<FramePermission> framePermissions = framePermissionService.selectByExample(framePermissionExample);
+        if (CollectionUtils.isNotEmpty(framePermissions)) {
+            String menuIndex = framePermissions.get(0).getId();
+            FramePermissionExample permissionExample = new FramePermissionExample();
+            permissionExample.createCriteria().andNameEqualTo("付款审批流程");
+            List<FramePermission> permissions = framePermissionService.selectByExample(framePermissionExample);
+            if (CollectionUtils.isNotEmpty(permissions)) {
+                String subMenu = permissions.get(0).getId();
+                waitUrl = "/backstage?menuIndex=" + menuIndex + "&subMenu=" + subMenu;
+            }
+
+        }
+        return waitUrl;
+    }
+
+
+    /**
+     * 加密用户名
+     *
+     * @param username
+     * @return
+     */
+    public String encryptUsername(String username) {
+
+        byte[] key = Base64.decode(ssoKey);
+        // 构建
+        AES aes = SecureUtil.aes(key);
+        return aes.encryptHex(username);
+    }
+
+
 }