Quellcode durchsuchen

修复部门删除bug
增加定时任务,自动把钉钉不在授权范围内的员工标记为离职

seyason vor 2 Jahren
Ursprung
Commit
3d264ad741

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/CompanyDingdingMapper.java

@@ -2,6 +2,9 @@ package com.management.platform.mapper;
 
 import com.management.platform.entity.CompanyDingding;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface CompanyDingdingMapper extends BaseMapper<CompanyDingding> {
 
+    @Select("select corpid, corp_name, company_id from company_dingding left join company on company.id = company_dingding.company_id where company.set_meal = 1 and company.expiration_date > now()")
+    public List<CompanyDingding> getServicedDingdingCompanyList();
 }

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

@@ -269,12 +269,13 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                     httpRespMsg.setError(MessageUtils.message("department.dailyData"));
                     return httpRespMsg;
                 }
-                Integer auditDeptidCut = leaveSheetMapper.selectCount(new QueryWrapper<LeaveSheet>().eq("audit_deptid", departmentId));
-                if(auditDeptidCut>0){
-                    //httpRespMsg.setError("当前部门已被请假数据使用");
-                    httpRespMsg.setError(MessageUtils.message("department.leaveDate"));
-                    return httpRespMsg;
-                }
+                //请假单只关联到审核人,不关联审核部门
+//                Integer auditDeptidCut = leaveSheetMapper.selectCount(new QueryWrapper<LeaveSheet>().eq("audit_deptid", departmentId));
+//                if(auditDeptidCut>0){
+//                    //httpRespMsg.setError("当前部门已被请假数据使用");
+//                    httpRespMsg.setError(MessageUtils.message("department.leaveDate"));
+//                    return httpRespMsg;
+//                }
                 Integer auditWorkflowTimeSettingCut = auditWorkflowTimeSettingMapper.selectCount(new QueryWrapper<AuditWorkflowTimeSetting>().eq("audit_dept_id", departmentId));
                 if(auditWorkflowTimeSettingCut>0){
                     //httpRespMsg.setError("当前部门已被工时审批流数据使用");

+ 33 - 30
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -472,40 +472,43 @@ public class DingDingServiceImpl implements DingDingService {
             } else {
                 accessToken = dingding.getAccessToken();
             }
-            List<User> allActiveUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active", 1));
-            List<User> errorUserList = new ArrayList<>();
-            for (User user : allActiveUserList) {
-                DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
-                OapiV2UserGetRequest req = new OapiV2UserGetRequest();
-                req.setUserid(user.getDingdingUserid());
-                req.setLanguage("zh_CN");
-                OapiV2UserGetResponse rsp = client.execute(req, accessToken);
-                JSONObject resp = JSONObject.parseObject(rsp.getBody());
-                if (resp.getInteger("errcode") == 0) {
-                    System.out.println("读取正确");
+            if (!StringUtils.isEmpty(accessToken)) {
+                List<User> allActiveUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active", 1));
+                List<User> errorUserList = new ArrayList<>();
+                for (User user : allActiveUserList) {
+                    DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
+                    OapiV2UserGetRequest req = new OapiV2UserGetRequest();
+                    req.setUserid(user.getDingdingUserid());
+                    req.setLanguage("zh_CN");
+                    OapiV2UserGetResponse rsp = client.execute(req, accessToken);
+                    JSONObject resp = JSONObject.parseObject(rsp.getBody());
+                    if (resp.getInteger("errcode") == 0) {
+//                        System.out.println("读取正确");
+                    } else {
+                        errorUserList.add(user);
+                    }
+                }
+                if (errorUserList.size() == 0) {
+//                    System.out.println("全部正确");
+                    resultStr = "全部在授权范围,无需停用";
                 } else {
-                    errorUserList.add(user);
+                    List<User> updateUser = new ArrayList<>();
+                    errorUserList.stream().forEach(err->{
+                        System.out.println("无效User:"+err.getName());
+                        User u = new User();
+                        u.setId(err.getId());
+                        u.setIsActive(0);
+                        u.setInductionDate(LocalDate.now());
+                        updateUser.add(u);
+                    });
+                    if (updateUser.size() > 0) {
+                        userService.updateBatchById(updateUser);
+                    }
+                    resultStr = "已检测到:" + errorUserList.stream().map(User::getName).collect(Collectors.joining(","))+"不在授权范围,自动处理为停用";
                 }
-            }
-            if (errorUserList.size() == 0) {
-                System.out.println("全部正确");
-                resultStr = "全部在授权范围,无需停用";
             } else {
-                List<User> updateUser = new ArrayList<>();
-                errorUserList.stream().forEach(err->{
-                    System.out.println("无效User:"+err.getName());
-                    User u = new User();
-                    u.setId(err.getId());
-                    u.setIsActive(0);
-                    u.setInductionDate(LocalDate.now());
-                    updateUser.add(u);
-                });
-                if (updateUser.size() > 0) {
-                    userService.updateBatchById(updateUser);
-                }
-                resultStr = "已检测到:" + errorUserList.stream().map(User::getName).collect(Collectors.joining(","))+"不在授权范围,自动处理为停用";
+                resultStr = "AccessToken为空";
             }
-
         } catch (ApiException e) {
             e.printStackTrace();
             resultStr = e.getMessage();

+ 13 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -80,6 +80,8 @@ public class TimingTask {
     @Resource
     private CompanyMapper companyMapper;
     @Resource
+    private CompanyDingdingMapper companyDingdingMapper;
+    @Resource
     private ScreenshotMapper screenshotMapper;
     @Resource
     private TimeTypeMapper timeTypeMapper;
@@ -606,6 +608,17 @@ public class TimingTask {
         }
     }
 
+    //每天2点30分 自动检查钉钉的授权范围人员
+    @Scheduled(cron = "0 30 2 ? * *")
+    private void autoCheckDingdingUserRange() {
+        if (isDev) return;
+        List<CompanyDingding> dingdingList = companyDingdingMapper.getServicedDingdingCompanyList();
+        dingdingList.forEach(d->{
+            String result = dingDingService.inactiveUserNotInAuthRange(d.getCorpid());
+            System.out.println("钉钉自动处理无效人员,"+d.getCorpName()+":"+result);
+        });
+    }
+
     //每天2点10分 自动审核超过指定天数的日报
     @Scheduled(cron = "0 10 2 ? * *")
     private void autoApprove() {