Pārlūkot izejas kodu

钉钉获取假期余额,人员菜单增加自定义维度的维护

seyason 3 gadi atpakaļ
vecāks
revīzija
03a5573d1b

+ 15 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DingDingController.java

@@ -360,11 +360,19 @@ public class DingDingController {
         return new HttpRespMsg();
     }
 //
-//    @RequestMapping("/testCorpVal")
-//    public HttpRespMsg testCorpVal(Integer companyId) {
-//        CompanyDingding companyDingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
-//
-//        dingDingService.getCorpSelfDefSmartReport(companyDingding);
-//        return new HttpRespMsg();
-//    }
+    @RequestMapping("/testCorpLeaveType")
+    public HttpRespMsg testCorpLeaveType(Integer companyId) {
+        CompanyDingding companyDingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
+
+        dingDingService.getLeaveTypeList(companyId);
+        return new HttpRespMsg();
+    }
+
+    @RequestMapping("/testSendBusTripLink")
+    public HttpRespMsg testSendBusTripLink(Integer companyId) {
+        CompanyDingding dingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
+
+        companyDingdingService.sendBusinessTripSettingMsg(companyId, dingding.getAgentId(), "040534176023851922");
+        return new HttpRespMsg();
+    }
 }

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/LeaveTypeVO.java

@@ -0,0 +1,6 @@
+package com.management.platform.entity.vo;
+
+public class LeaveTypeVO {
+    public String leaveCode;
+    public String leaveName;
+}

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DingDingService.java

@@ -32,5 +32,5 @@ public interface DingDingService {
 
     void getCorpSelfDefSmartReport(CompanyDingding dingding);
 
-    public HttpRespMsg getLeaveTypeList(Integer companyId);
+    public HttpRespMsg getLeaveTypeList(String leaveCode, Integer companyId, String userIds, long offset);
 }

+ 7 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyDingdingServiceImpl.java

@@ -72,7 +72,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
         req.setUseridList(useridList);
         req.setTemplateId(TEMPLATE_ALERT_REPORT);
         JSONObject json = new JSONObject();
-        json.put("APPID", appId);
+        json.put("APPID", ""+appId);
         json.put("CORPID", dingding.getCorpid());
         json.put("msg", msg);
         req.setData(json.toJSONString());
@@ -100,7 +100,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
         json.put("project", projectNames);
         json.put("reason", reason);
         json.put("auditUser", auditorName);
-        json.put("APPID", appId);
+        json.put("APPID", ""+appId);
         json.put("CORPID", dingding.getCorpid());
         req.setData(json.toJSONString());
         OapiMessageCorpconversationSendbytemplateResponse rsp = null;
@@ -128,7 +128,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
         json.put("employeeName", "张辉");
         json.put("deptName", "质量部");
         json.put("date", "2022-03-29");
-        json.put("APPID", appId);
+        json.put("APPID", ""+appId);
         json.put("CORPID", dingding.getCorpid());
         req.setData(json.toJSONString());
         OapiMessageCorpconversationSendbytemplateResponse rsp = null;
@@ -153,7 +153,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
         req.setTemplateId(TEMPLATE_REPORT_WAITING_APPLY);
         JSONObject json = new JSONObject();
         json.put("auditNum", ""+auditNum);
-        json.put("APPID", appId);
+        json.put("APPID", ""+appId);
         json.put("CORPID", dingding.getCorpid());
         req.setData(json.toJSONString());
         OapiMessageCorpconversationSendbytemplateResponse rsp = null;
@@ -176,7 +176,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
         req.setUseridList(useridList);
         req.setTemplateId(TEMPLATE_BUSTRIP_SETTING);
         JSONObject json = new JSONObject();
-        json.put("APPID", appId);
+        json.put("APPID", ""+appId);
         json.put("CORPID", dingding.getCorpid());
         req.setData(json.toJSONString());
         OapiMessageCorpconversationSendbytemplateResponse rsp = null;
@@ -203,7 +203,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
                 JSONObject json = new JSONObject();
                 json.put("name", ""+title);
                 json.put("endDate", ""+endDate);
-                json.put("APPID", appId);
+                json.put("APPID", ""+appId);
                 json.put("CORPID", dingding.getCorpid());
                 req.setData(json.toJSONString());
 
@@ -231,7 +231,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
         JSONObject json = new JSONObject();
         json.put("taskName", taskName);
         json.put("project", project);
-        json.put("APPID", appId);
+        json.put("APPID", ""+appId);
         json.put("CORPID", dingding.getCorpid());
         req.setData(json.toJSONString());
         OapiMessageCorpconversationSendbytemplateResponse rsp = null;

+ 50 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -14,6 +14,7 @@ import com.dingtalk.api.request.*;
 import com.dingtalk.api.response.*;
 import com.management.platform.constant.Constant;
 import com.management.platform.entity.*;
+import com.management.platform.entity.vo.LeaveTypeVO;
 import com.management.platform.entity.vo.UserVO;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
@@ -379,6 +380,7 @@ public class DingDingServiceImpl implements DingDingService {
             }
             dingding.setInnerToken(response.getAccessToken());
             dingding.setInnerExpireTime(LocalDateTime.now().plusSeconds(response.getExpiresIn()));
+            companyDingdingMapper.updateById(dingding);
         }
         return dingding.getInnerToken();
     }
@@ -1343,22 +1345,62 @@ public class DingDingServiceImpl implements DingDingService {
         }
     }
 
-    public HttpRespMsg getLeaveTypeList(Integer companyId) {
+    public HttpRespMsg getLeaveTypeList(String leaveCode, Integer companyId, String userIds, long offset) {
         CompanyDingding dingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
-
+        HttpRespMsg msg = new HttpRespMsg();
+        HashMap resultMap = new HashMap();
         DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/vacation/type/list");
         OapiAttendanceVacationTypeListRequest req = new OapiAttendanceVacationTypeListRequest();
         List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("role_name", "超级管理员"));
-        req.setOpUserid(userList.get(0).getDingdingUserid());
-        req.setVacationSource("all");
-        OapiAttendanceVacationTypeListResponse rsp = null;
-        try {
-            rsp = client.execute(req, getInnerCorpToken(dingding));
-            System.out.println(rsp.getBody());
+        String oaManagerDid =userList.get(0).getDingdingUserid();
+        if (leaveCode == null) {
+            req.setOpUserid(oaManagerDid);
+            req.setVacationSource("all");
+            OapiAttendanceVacationTypeListResponse rsp = null;
+            try {
+                rsp = client.execute(req, getInnerCorpToken(dingding));
+                System.out.println(rsp.getBody());
+                JSONObject json = JSONObject.parseObject(rsp.getBody());
+                JSONArray result = json.getJSONArray("result");
+                List<LeaveTypeVO> typeList = new ArrayList<>();
+                LeaveTypeVO defaultType = null;
+                for (int i=0;i<result.size(); i++) {
+                    JSONObject obj = result.getJSONObject(i);
+                    LeaveTypeVO vo = new LeaveTypeVO();
+                    vo.leaveCode = obj.getString("leave_code");
+                    vo.leaveName = obj.getString("leave_name");
+                    typeList.add(vo);
+                }
+                resultMap.put("leaveTypeList", typeList);
+                leaveCode = typeList.get(0).leaveCode;
+            } catch (ApiException e) {
+                e.printStackTrace();
+            }
+        }
 
+        //再调用查看假期余额的接口
+        client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/vacation/quota/list");
+        OapiAttendanceVacationQuotaListRequest quoataReq = new OapiAttendanceVacationQuotaListRequest();
+        quoataReq.setLeaveCode(leaveCode);
+        quoataReq.setOpUserid(oaManagerDid);
+        if (StringUtils.isEmpty(userIds)) {
+            //获取全部员工,离职的不看
+            userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active", 1));
+            String collect = userList.stream().map(User::getDingdingUserid).collect(Collectors.joining(","));
+            userIds = collect;
+        }
+        quoataReq.setUserids(userIds);
+
+        quoataReq.setOffset(offset);
+        quoataReq.setSize(50L);
+        OapiAttendanceVacationQuotaListResponse quotaListResponse = null;
+        try {
+            quotaListResponse = client.execute(quoataReq, getInnerCorpToken(dingding));
         } catch (ApiException e) {
             e.printStackTrace();
         }
+        System.out.println(quotaListResponse.getBody());
+        JSONObject json =
         return new HttpRespMsg();
     }
 

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -257,6 +257,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             deptModule.setId(0);
             moduleList.add(2,deptModule);
         }
+        //开启了自定义日报列表的情况下,需要菜单上有
+        if (timeType.getCustomDegreeActive() == 1 && moduleList.stream().anyMatch(mod->mod.getName().equals("系统基础设置"))) {
+            SysModule centerManageModule = new SysModule();
+            centerManageModule.setName(timeType.getCustomDegreeName()+"管理");
+            centerManageModule.setPath("/centerManage");
+            centerManageModule.setId(0);
+            //加到组织架构前面
+            int findIndex = 0;
+            for (int i=0;i<moduleList.size(); i++) {
+                if (moduleList.get(i).getName().equals("组织架构") || moduleList.get(i).getName().equals("基础数据管理")) {
+                    findIndex = i;
+                    break;
+                }
+            }
+            moduleList.add(findIndex,centerManageModule);
+        }
         //组装层级关系,默认只有两级
         List<SysModule> menuList = new ArrayList<>();
         for (SysModule module : moduleList) {
@@ -268,6 +284,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             List<SysModule> list = moduleList.stream().filter(mod -> mainMenu.getId().equals(mod.getParentId())).collect(Collectors.toList());
             mainMenu.setChildren(list);
         }
+
         user.setModuleList(menuList);
         //此处返回权限集合
         List<Integer> functionIdList = new ArrayList<>();