Просмотр исходного кода

职业技能日程添加参会人

wzy 1 месяц назад
Родитель
Сommit
f6ed44118a

+ 23 - 3
src/main/java/com/malk/pro/aspect/ControllerYdAspect.java

@@ -39,9 +39,9 @@ public class ControllerYdAspect {
     // demo ===============================谷元/能辉========================================================================== end
 
 
-    // ===============================职业技能========================================================================== start
+    // ===============================职业技能-部门考勤========================================================================== start
     // 定义切点:拦截所有Controller包下的方法
-    @Pointcut("execution(* com.malk.pro.zyjn.controller..*.*(..))")
+    @Pointcut("execution(* com.malk.pro.zyjn.controller.ZyjnController.*(..))")
     public void zyjnControllerPointcut() {}
     // 在方法执行前执行
     @Before("zyjnControllerPointcut()")
@@ -56,7 +56,27 @@ public class ControllerYdAspect {
     public void zyjnAfterReturning(JoinPoint joinPoint, Object result) {
         MDC.remove("MDC_KEY_PID");
     }
-    // ===============================职业技能========================================================================== end
+    // ===============================职业技能-部门考勤========================================================================== end
+
+
+    // ===============================职业技能-会议管理========================================================================== start
+    // 定义切点:拦截所有Controller包下的方法
+    @Pointcut("execution(* com.malk.pro.zyjn.controller.TongbuController.*(..))")
+    public void zyjnControllerPointcut2() {}
+    // 在方法执行前执行
+    @Before("zyjnControllerPointcut2()")
+    public void zyjnBefore2(JoinPoint joinPoint) {
+        // 项目编号 2003 每个项目一个编号,请勿重复
+        McProject.addYida("2003",new String[]{"APP_E0BKS4I6U44824QM1KE5","U0E66VB1J86UR5RKDPXQTA7WM66K3896KHW8MS5"});
+        McProject.addDd("2003",new String[]{"dingn2nkwrrosmyjk9o2","t26NJ2TIHeQZAG17QPJAPoVgrVwPUZCLH0JLO955_c0BoAhdaAS5eNf9Fc6KAepo"});
+        MDC.put("MDC_KEY_PID","2003");
+    }
+    // 在方法执行后执行
+    @AfterReturning(pointcut = "zyjnControllerPointcut2()", returning = "result")
+    public void zyjnAfterReturning2(JoinPoint joinPoint, Object result) {
+        MDC.remove("MDC_KEY_PID");
+    }
+    // ===============================职业技能-会议管理========================================================================== end
 
 
 }

+ 6 - 0
src/main/java/com/malk/pro/zyjn/controller/TongbuController.java

@@ -34,6 +34,12 @@ public class TongbuController {
         return richeng;
     }
 
+    //宜搭各部门指定参会人后更新钉钉日程
+    @PostMapping("/updateRicheng")
+    public McR updateRicheng(@RequestBody Map map){
+        return tongbuService.updateRicheng(map);
+    }
+
     //查询会议申请”汇总参会部门“
     @PostMapping("/getUsersDepts")
     public McR getUsersDepts(@RequestBody Map map){

+ 2 - 0
src/main/java/com/malk/pro/zyjn/service/TongbuService.java

@@ -17,4 +17,6 @@ public interface TongbuService {
     McR getUsersDepts(List<String> userIds,List<String> deptNames);
 
     McR query(String formUuid, Map conditions, Map argument,int currentPage,int pageSize);
+
+    McR updateRicheng(Map map);
 }

+ 73 - 1
src/main/java/com/malk/pro/zyjn/service/impl/TongbuServiceImpl.java

@@ -99,7 +99,7 @@ public class TongbuServiceImpl implements TongbuService {
             DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
             OapiV2UserGetRequest req = new OapiV2UserGetRequest();
             req.setUserid(userId);
-            OapiV2UserGetResponse rsp = client.execute(req, getAccessToken());
+            OapiV2UserGetResponse rsp = client.execute(req, ddClient.getAccessToken());
 //            System.out.println(rsp.getBody());
             String body = rsp.getBody();
             //通过fastjson工具转换成json对象,逐层解析
@@ -829,4 +829,76 @@ public class TongbuServiceImpl implements TongbuService {
 
         return McR.success(ddrNew);
     }
+
+    @Override
+    public McR updateRicheng(Map map) {
+        String formInstId = UtilMap.getString(map, "formInstId");
+        String dept = UtilMap.getString(map, "dept");
+
+        Map formData = ydClient.queryData(YDParam.builder()
+                .formInstId(formInstId)
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+
+        //获取各部门参会人
+        List<String> userIds = new ArrayList<>();
+
+        switch (dept){
+            case "信息技术科": userIds = UtilMap.getList(formData,"employeeField_m99dcmr0_id");break;
+            case "研发管理科": userIds = UtilMap.getList(formData,"employeeField_m99dcmr1_id");break;
+            case "竞赛管理科": userIds = UtilMap.getList(formData,"employeeField_m99dcmr4_id");break;
+            case "综合办公室": userIds = UtilMap.getList(formData,"employeeField_m99dcmr5_id");break;
+            case "考务管理科": userIds = UtilMap.getList(formData,"employeeField_m99dcmr6_id");break;
+            case "财务科": userIds = UtilMap.getList(formData,"employeeField_m99dcmr2_id");break;
+            case "质量督导科": userIds = UtilMap.getList(formData,"employeeField_m99dcmr7_id");break;
+            case "题库管理科": userIds = UtilMap.getList(formData,"employeeField_m99dcmr8_id");break;
+            case "系统实施": userIds = UtilMap.getList(formData,"employeeField_mc4mc2vw_id");break;
+        }
+
+        //获取日程参与者
+        String scheduleId = UtilMap.getString(formData, "textField_m54zg5b1");//日程id
+        String userId = UtilMap.getString(formData, "textField_m54zg5b0");//发起人
+        String unionId = getUnionId(userId);//发起人unionId
+        String jsonString = UtilHttp.doGet("https://api.dingtalk.com/v1.0/calendar/users/" + unionId + "/calendars/primary/events/" + scheduleId + "/attendees", ddClient.initTokenHeader(), new HashMap<>());
+
+        Map result = (Map) JSONObject.parse(jsonString);
+
+        //原参会人列表
+        List<Map> attendees = UtilMap.getList(result, "attendees");
+
+        List<Map> attendeesToAdd = new ArrayList<>();
+
+        //添加当前部门参会人
+        for (String userId2 : userIds) {
+            Map attendee = new HashMap();
+
+            String unionId2 = getUnionId(userId2);
+
+            //参会人是否存在
+            boolean isExists = attendees.stream().anyMatch(item -> unionId2.equals(UtilMap.getString(item,"id")));
+
+            if (!isExists){
+                attendee.put("id",unionId2);//参会人unionId
+                attendee.put("isOptional",true);//是否为可选参与人
+
+                attendeesToAdd.add(attendee);
+            }
+        }
+
+        //添加日程参会人
+        if (!attendeesToAdd.isEmpty()){
+            Map body = new HashMap();
+
+            body.put("attendeesToAdd",attendeesToAdd);//需要添加的参与人列表
+            body.put("pushNotification",true);//是否弹窗提醒
+            body.put("chatNotification",true);//是否单聊提醒
+
+            String jsonString2 = UtilHttp.doPost("https://api.dingtalk.com/v1.0/calendar/users/" + unionId + "/calendars/primary/events/" + scheduleId + "/attendees", ddClient.initTokenHeader(), null, body);
+
+            log.info("添加日程参会人结束:{}",jsonString2);
+        }else {
+            log.info("无需添加日程参会人");
+        }
+
+        return McR.success();
+    }
 }