LAPTOP-FO2T5SIU\35838 hai 6 meses
pai
achega
daa10bd9bf

+ 118 - 72
pro-base/src/main/java/com/idea/oa/apply/controller/ApplyPaymentSettleController.java

@@ -1,5 +1,10 @@
 package com.idea.oa.apply.controller;
 
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.CharsetUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.symmetric.AES;
+import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 
@@ -31,6 +36,7 @@ import com.rockstar.shiro.util.ShiroUtils;
 import com.rockstar.util.UUIDUtils;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -75,6 +81,9 @@ public class ApplyPaymentSettleController extends BaseController {
 
     @Value("${serverUrl}")
     private String serverUrl;
+    @Value("${ssoKey}")
+    private String ssoKey;
+
     @Autowired
     private FramePermissionService framePermissionService;
 
@@ -144,7 +153,6 @@ public class ApplyPaymentSettleController extends BaseController {
         String flowId = flowMain.getId();
         // 进行审核操作后 就要处理待办 清除数据
         String param = "id=" + flowId + "&flowMainPushId=" + flowMainPush.getId() + "&applyUser=" + flowMain.getApplyUser();
-        HandleTypeEnum.FK.setUrl(waitUrl);
         parkWaitHandleService.userHandle(HandleTypeEnum.FK, param, ShiroUtils.getUserId());
 
         Boolean isEnd = false;//是否结束
@@ -159,43 +167,6 @@ public class ApplyPaymentSettleController extends BaseController {
             } else {
 
                 try {
-                    // TODO: 2024/11/21 和泛微对接 推送信息
-
-                    String syscode = "AJ";
-                    String requestname = flowMain.getApplyTheme();
-                    String workflowname = ConstantFlowType.PAYMENT_NAME;
-                    String nodeName = flowMainPush.getNodeName();
-                    String pcurl = serverUrl;
-                    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);
-
-
                     FlowMainPushExample flowMainPushExample = new FlowMainPushExample();
                     flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0);
                     List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample);
@@ -220,7 +191,46 @@ public class ApplyPaymentSettleController extends BaseController {
                         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);
@@ -311,21 +321,8 @@ public class ApplyPaymentSettleController extends BaseController {
 
         try {
 
-            // TODO: 2024/11/21   和泛OA对接 推送待办
-            String syscode = "AJ";
             String flowId = "";
-            String requestname = applyTheme;
-            String workflowname = ConstantFlowType.PAYMENT_NAME;
             String nodeName = "";
-            String pcurl = serverUrl;
-            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() + "";
 
             FlowMainExample flowMainExample = new FlowMainExample();
             flowMainExample.createCriteria().andFormIdEqualTo(id).andFlowTypeEqualTo(ConstantFlowType.PAYMENT);
@@ -341,26 +338,6 @@ public class ApplyPaymentSettleController extends BaseController {
                     FlowMainPush flowMainPush = flowMainPushes.get(0);
                     nodeName = flowMainPush.getNodeName();
 
-                    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);
-
                     // 给本系统下一个节点的人推送待办
                     /**
                      * 添加待办
@@ -372,6 +349,24 @@ public class ApplyPaymentSettleController extends BaseController {
                      * @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企业
@@ -379,9 +374,44 @@ public class ApplyPaymentSettleController extends BaseController {
                     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);
+
                 }
 
             }
@@ -531,4 +561,20 @@ 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);
+    }
+
+
+
 }
+

+ 23 - 2
pro-base/src/main/java/com/idea/pro/controller/PubController.java

@@ -1,5 +1,9 @@
 package com.idea.pro.controller;
 
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.CharsetUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.symmetric.AES;
 import com.google.code.kaptcha.Constants;
 import com.rockstar.common.log.Log;
 import com.rockstar.frame.controller.HomeController;
@@ -8,6 +12,7 @@ import com.rockstar.util.Constant;
 import com.rockstar.util.StringUtils;
 import io.swagger.annotations.Api;
 import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -25,16 +30,21 @@ import java.util.UUID;
 @Api(value="公共控制类")
 public class PubController extends HomeController {
 
+    @Value("${ssoKey}")
+    private String ssoKey;
+
     @Log(title = "免密登录")
     @PostMapping("/loginSecret")
     @ResponseBody
-    public Map<String, Object> loginByKey(String userName, HttpServletRequest request) {
+    public Map<String, Object> loginByKey(String username, HttpServletRequest request) {
 
         try {
+
+            username = decryptUsername(username);
             Constant.getInstance().setUserType(Constant.USER_TYPE_MANAGER);
             String code = UUID.randomUUID().toString();
             request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, code);
-            Map<String, Object> view = loginView(userName, null,code,null,false,request, false, EasyTypeToken.LoginType.NOPASSWD);
+            Map<String, Object> view = loginView(username, null,code,null,false,request, false, EasyTypeToken.LoginType.NOPASSWD);
             view.put(Constant.VIEW_KEY_USER_TYPE, Constant.USER_TYPE_MANAGER);
             view.put(Constant.VIEW_KEY_TOKEN, "admin-token");
 
@@ -50,7 +60,18 @@ public class PubController extends HomeController {
     }
 
 
+    /**
+     * 解密用户名
+     * @param username
+     * @return
+     */
+    public String decryptUsername(String username){
 
+        byte[] key = Base64.decode(ssoKey);
+        // 构建
+        AES aes = SecureUtil.aes(key);
+        return aes.decryptStr(username, CharsetUtil.CHARSET_UTF_8);
+    }
 
 
 

+ 18 - 18
pro-base/src/main/java/com/idea/util/OAUtil.java

@@ -30,24 +30,24 @@ public class OAUtil {
 
     public static String receiveRequestInfoByJson(Map<String,Object>  parma) {
 
-//        String url = prefix + "/rest/ofs/ReceiveRequestInfoByJson";
-//        String body = JSON.toJSONString(parma);
-//        // 发送POST请求
-//        HttpResponse response = HttpRequest.post(url)
-//                .header(headers)
-//                .body(body)
-//                .execute();
-//
-//        System.out.println("请求参数:" + JSON.toJSONString(parma));
-//        // 获取响应状态码
-//        int statusCode = response.getStatus();
-////        System.out.println("Status Code: " + statusCode);
-//
-//        // 获取响应体
-//        String responseBody = response.body();
-////        System.out.println("Response Body: " + responseBody);
-//        return responseBody;
-        return null;
+        String url = prefix + "/rest/ofs/ReceiveRequestInfoByJson";
+        String body = JSON.toJSONString(parma);
+        // 发送POST请求
+        HttpResponse response = HttpRequest.post(url)
+                .header(headers)
+                .body(body)
+                .execute();
+
+        System.out.println("请求参数:" + JSON.toJSONString(parma));
+        // 获取响应状态码
+        int statusCode = response.getStatus();
+//        System.out.println("Status Code: " + statusCode);
+
+        // 获取响应体
+        String responseBody = response.body();
+//        System.out.println("Response Body: " + responseBody);
+        return responseBody;
+//        return null;
     }
 
     public static void main(String[] args) {