Bladeren bron

钉钉通讯录搜索

Min 1 jaar geleden
bovenliggende
commit
dd6decec93
12 gewijzigde bestanden met toevoegingen van 232 en 21 verwijderingen
  1. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyDingdingController.java
  2. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java
  3. 25 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java
  4. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CompanyDingdingService.java
  5. 37 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyDingdingServiceImpl.java
  6. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java
  7. 27 6
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java
  8. 26 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectPercentageServiceImpl.java
  9. 45 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  10. 24 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java
  11. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  12. 7 3
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyDingdingController.java

@@ -1,6 +1,8 @@
 package com.management.platform.controller;
 
 
+import com.aliyun.dingtalkcontact_1_0.models.SearchUserResponse;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
 import com.management.platform.entity.CompanyDingding;
@@ -96,5 +98,19 @@ public class CompanyDingdingController {
         companyDingdingService.sendOAMsg(companyDingding, "040534176023851922", "OA提醒测试","这是一次测试",form,null);
         return new HttpRespMsg();
     }
+
+    @RequestMapping("/searchUserInfo")
+    public HttpRespMsg searchUserInfo(String userName) throws Exception {
+        HttpRespMsg msg=new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        CompanyDingding dd = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", user.getCompanyId()));
+        HttpRespMsg searchUserInfo = companyDingdingService.getSearchUserInfo(dd, userName, 0);
+        SearchUserResponse searchUserResponse = (SearchUserResponse) searchUserInfo.data;
+        List<String> list = searchUserResponse.body.list;
+        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getDingdingUserid, list));
+        msg.setData(userList);
+        return msg;
+    }
 }
 

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -536,6 +536,7 @@ public class UserController {
                     while (i < 10) {
                         Thread.sleep(300);
                         Integer status = corpddJobCenter.get(jobId);
+                        System.out.println("打印corpddJobCenter"+corpddJobCenter);
                         if (status != null) {
                             if (status == 1) {
                                 syncTranslationResult = dingDingService.getSyncTranslationResult(jobId,dingding);

+ 25 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java

@@ -3,6 +3,7 @@ package com.management.platform.controller;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dingtalkcontact_1_0.models.SearchUserResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
@@ -82,6 +83,8 @@ public class UserCorpwxTimeController {
     UserCorpwxTimeService userCorpwxTimeService;
     @Resource
     private CompanyDingdingMapper companyDingdingMapper;
+    @Resource
+    private CompanyDingdingService companyDingdingService;
 
     @RequestMapping("/getMyDeptMembsData")
     public HttpRespMsg getMyDeptMembsData(String startDate, String endDate) {
@@ -477,6 +480,7 @@ public class UserCorpwxTimeController {
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        CompanyDingding dingding = companyDingdingMapper.selectOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, user.getCompanyId()));
         //然后处理文件
         String fileName = multipartFile.getOriginalFilename();
         File file = new File(fileName == null ? "file" : fileName);
@@ -534,16 +538,35 @@ public class UserCorpwxTimeController {
                     userNameList.add(username);
                 }
             }
+            List<User> targetUserList=new ArrayList<>();
             HttpRespMsg respMsg=new HttpRespMsg();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1&&userNameList.size()>0){
-                System.out.println("参与搜素的人员列表"+userNameList);
+                System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
                 respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                 if(respMsg.code.equals("0")){
                     msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                     return msg;
                 }
+                targetUserList= (List<User>) respMsg.data;
+            }
+            if(dingding!=null&&dingding.getSyncContact()==1&&userNameList.size()>0){
+                System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
+                for (String name : userNameList) {
+                    respMsg= companyDingdingService.getSearchUserInfo(dingding,name,1);
+                    SearchUserResponse searchUserResponse = (SearchUserResponse) respMsg.data;
+                    if(searchUserResponse.body.totalCount>0){
+                        msg.setError("姓名为["+name+"]的人员存在重复,请使用工号!");
+                        return msg;
+                    }
+                    if(searchUserResponse.body.list.size()>0){
+                        User item=new User();
+                        //为了修改代码 此处用企业微信同一个字段 setCorpwxUserid
+                        item.setName(name);
+                        item.setCorpwxUserid(searchUserResponse.body.list.get(0));
+                        targetUserList.add(item);
+                    }
+                }
             }
-            List<User> targetUserList= (List<User>) respMsg.data;
             List<UserCorpwxTime> userCorpwxTimeList = new ArrayList<>();
             int dataCount = 0;
             for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CompanyDingdingService.java

@@ -3,6 +3,7 @@ package com.management.platform.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
 import com.management.platform.entity.CompanyDingding;
+import com.management.platform.util.HttpRespMsg;
 
 import java.time.LocalDate;
 import java.util.List;
@@ -37,4 +38,6 @@ public interface CompanyDingdingService extends IService<CompanyDingding> {
     public void sendOAMsg(CompanyDingding dingding, String useridList,String titleText,String content, List<OapiMessageCorpconversationAsyncsendV2Request.Form> form,Integer projectId);
 
     public void sendInnerLinkMsg(CompanyDingding dingding, String useridList, String title, String alertMsg);
+
+    HttpRespMsg getSearchUserInfo(CompanyDingding dingding, String name, Integer searchType) throws Exception;
 }

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

@@ -1,10 +1,12 @@
 package com.management.platform.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dingtalkcontact_1_0.models.SearchUserResponse;
 import com.aliyun.dingtalkoauth2_1_0.models.GetCorpAccessTokenRequest;
 import com.aliyun.dingtalkoauth2_1_0.models.GetCorpAccessTokenResponse;
 import com.aliyun.tea.TeaException;
 import com.aliyun.teaopenapi.models.Config;
+import com.aliyun.teautil.models.RuntimeOptions;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dingtalk.api.DefaultDingTalkClient;
@@ -20,10 +22,12 @@ import com.dingtalk.api.response.OapiServiceGetSuiteTokenResponse;
 import com.management.platform.entity.CompanyDingding;
 import com.management.platform.entity.SysConfig;
 import com.management.platform.entity.TimeType;
+import com.management.platform.entity.User;
 import com.management.platform.mapper.CompanyDingdingMapper;
 import com.management.platform.mapper.SysConfigMapper;
 import com.management.platform.mapper.TimeTypeMapper;
 import com.management.platform.service.CompanyDingdingService;
+import com.management.platform.util.HttpRespMsg;
 import com.taobao.api.ApiException;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -594,4 +598,37 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
         accessToken = dingding.getAccessToken();
         return accessToken;
     }
+
+    @Override
+    public HttpRespMsg getSearchUserInfo(CompanyDingding dingding, String name, Integer searchType) throws Exception {
+        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
+        config.protocol = "https";
+        config.regionId = "central";
+        com.aliyun.dingtalkcontact_1_0.Client client = new com.aliyun.dingtalkcontact_1_0.Client(config);
+        com.aliyun.dingtalkcontact_1_0.models.SearchUserHeaders searchUserHeaders = new com.aliyun.dingtalkcontact_1_0.models.SearchUserHeaders();
+        searchUserHeaders.xAcsDingtalkAccessToken = getCorpAccessToken(dingding);
+        com.aliyun.dingtalkcontact_1_0.models.SearchUserRequest searchUserRequest = new com.aliyun.dingtalkcontact_1_0.models.SearchUserRequest()
+                .setQueryWord(name)
+                .setOffset(0)
+                .setSize(100)
+                .setFullMatchField(searchType);
+        try {
+            SearchUserResponse searchUserResponse = client.searchUserWithOptions(searchUserRequest, searchUserHeaders, new RuntimeOptions());
+            HttpRespMsg msg=new HttpRespMsg();
+            msg.data=searchUserResponse;
+            return msg;
+        } catch (TeaException err) {
+            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                // err 中含有 code 和 message 属性,可帮助开发定位问题
+            }
+
+        } catch (Exception _err) {
+            TeaException err = new TeaException(_err.getMessage(), _err);
+            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                // err 中含有 code 和 message 属性,可帮助开发定位问题
+            }
+        }
+        return null;
+    }
+
 }

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -2640,6 +2640,7 @@ public class DingDingServiceImpl implements DingDingService {
             try {
                 GetTranslateFileJobResultResponse translateFileJobResultWithOptions = client.getTranslateFileJobResultWithOptions(getTranslateFileJobResultRequest, getTranslateFileJobResultHeaders, new RuntimeOptions());
                 GetTranslateFileJobResultResponseBody body = translateFileJobResultWithOptions.body;
+                System.out.println("钉钉转译url=========="+body.url);
                 return body.url;
             } catch (TeaException err) {
                 if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {

+ 27 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -2,6 +2,7 @@ package com.management.platform.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dingtalkcontact_1_0.models.SearchUserResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -97,6 +98,8 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
     private ExpenseAuditSettingMapper expenseAuditSettingMapper;
     @Resource
     private CompanyDingdingMapper companyDingdingMapper;
+    @Resource
+    private CompanyDingdingService companyDingdingService;
 
 
     @Override
@@ -802,6 +805,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        CompanyDingding dingding = companyDingdingService.getOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, user.getCompanyId()));
         //然后处理文件
         for (MultipartFile multipartFile : files) {
             String fileName = multipartFile.getOriginalFilename();
@@ -857,19 +861,36 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
                 //做完非空校验后,进行姓名处理
 
                 String reimburserName = reimburserCell.getStringCellValue();
-
+                List<String> userNameList=new ArrayList<>();
+                userNameList.add(reimburserName);
                 HttpRespMsg respMsg= null;
                 List<User> targetUserList= new ArrayList<>();
-                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                    List<String> userNameList=new ArrayList<>();
-                    userNameList.add(reimburserName);
-                    System.out.println("参与搜素的人员列表"+userNameList);
+                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1&&userNameList.size()>0){
+                    System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
                     respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                     if(respMsg.code.equals("0")){
                         msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                         return msg;
                     }
-                    targetUserList = (List<User>) respMsg.data;
+                    targetUserList= (List<User>) respMsg.data;
+                }
+                if(dingding!=null&&dingding.getSyncContact()==1&&userNameList.size()>0){
+                    System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
+                    for (String name : userNameList) {
+                        respMsg= companyDingdingService.getSearchUserInfo(dingding,name,1);
+                        SearchUserResponse searchUserResponse = (SearchUserResponse) respMsg.data;
+                        if(searchUserResponse.body.totalCount>0){
+                            msg.setError("姓名为["+name+"]的人员存在重复,请使用工号!");
+                            return msg;
+                        }
+                        if(searchUserResponse.body.list.size()>0){
+                            User item=new User();
+                            //为了修改代码 此处用企业微信同一个字段 setCorpwxUserid
+                            item.setName(name);
+                            item.setCorpwxUserid(searchUserResponse.body.list.get(0));
+                            targetUserList.add(item);
+                        }
+                    }
                 }
                 ExpenseSheet expenseSheet = new ExpenseSheet();
                 if(functionList.size()>0){

+ 26 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectPercentageServiceImpl.java

@@ -2,14 +2,13 @@ package com.management.platform.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dingtalkcontact_1_0.models.SearchUserResponse;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
-import com.management.platform.service.ExcelExportService;
-import com.management.platform.service.FinanceProjectsService;
-import com.management.platform.service.ProjectPercentageService;
-import com.management.platform.service.WxCorpInfoService;
+import com.management.platform.service.*;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
@@ -61,6 +60,8 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
     private ExcelExportService excelExportService;
     @Resource
     private ProjectPercentageService projectPercentageService;
+    @Resource
+    private CompanyDingdingService companyDingdingService;
     @Value(value = "${upload.path}")
     private String path;
     @Override
@@ -170,6 +171,7 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
             //获取公司全部成员
             List<User> allUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
             WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id",companyId));
+            CompanyDingding dingding = companyDingdingService.getOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, companyId));
             Sheet sheet = workbook.getSheetAt(0);
             //由于第一行需要指明列对应的标题
             int rowNum = sheet.getLastRowNum();
@@ -207,6 +209,7 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
                     userNameList.add(username);
                 }
             }
+            List<User> targetUserList=new ArrayList<>();
             HttpRespMsg respMsg=new HttpRespMsg();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1&&userNameList.size()>0){
                 System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
@@ -215,8 +218,26 @@ public class ProjectPercentageServiceImpl extends ServiceImpl<ProjectPercentageM
                     msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                     return msg;
                 }
+                targetUserList= (List<User>) respMsg.data;
+            }
+            if(dingding!=null&&dingding.getSyncContact()==1&&userNameList.size()>0){
+                System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
+                for (String name : userNameList) {
+                    respMsg= companyDingdingService.getSearchUserInfo(dingding,name,1);
+                    SearchUserResponse searchUserResponse = (SearchUserResponse) respMsg.data;
+                    if(searchUserResponse.body.totalCount>0){
+                        msg.setError("姓名为["+name+"]的人员存在重复,请使用工号!");
+                        return msg;
+                    }
+                    if(searchUserResponse.body.list.size()>0){
+                        User item=new User();
+                        //为了修改代码 此处用企业微信同一个字段 setCorpwxUserid
+                        item.setName(name);
+                        item.setCorpwxUserid(searchUserResponse.body.list.get(0));
+                        targetUserList.add(item);
+                    }
+                }
             }
-            List<User> targetUserList= (List<User>) respMsg.data;
             for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {
                 Row row = sheet.getRow(rowIndex);
                 if (row == null) {

+ 45 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -3,6 +3,7 @@ package com.management.platform.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dingtalkcontact_1_0.models.SearchUserResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -242,6 +243,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     private HolidaySettingService holidaySettingService;
     @Resource
     private CompanyDingdingMapper companyDingdingMapper;
+    @Resource
+    private CompanyDingdingService companyDingdingService;
 
     @Value(value = "${upload.path}")
     private String path;
@@ -4408,6 +4411,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(userId);
         TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id",user.getCompanyId()));
+        CompanyDingding dingding = companyDingdingService.getOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, user.getCompanyId()));
         List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
         //然后处理文件
         String fileName = multipartFile.getOriginalFilename();
@@ -4508,6 +4512,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         userNameList.add(inchargerName);
                     }
                 }
+                List<User> targetUserList=new ArrayList<>();
                 HttpRespMsg respMsg=new HttpRespMsg();
                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1&&userNameList.size()>0){
                     System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
@@ -4516,8 +4521,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                         return msg;
                     }
+                    targetUserList= (List<User>) respMsg.data;
+                }
+                if(dingding!=null&&dingding.getSyncContact()==1&&userNameList.size()>0){
+                    System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
+                    for (String name : userNameList) {
+                        respMsg= companyDingdingService.getSearchUserInfo(dingding,name,1);
+                        SearchUserResponse searchUserResponse = (SearchUserResponse) respMsg.data;
+                        if(searchUserResponse.body.totalCount>0){
+                            msg.setError("姓名为["+name+"]的人员存在重复,请使用工号!");
+                            return msg;
+                        }
+                        if(searchUserResponse.body.list.size()>0){
+                            User item=new User();
+                            //为了修改代码 此处用企业微信同一个字段 setCorpwxUserid
+                            item.setName(name);
+                            item.setCorpwxUserid(searchUserResponse.body.list.get(0));
+                            targetUserList.add(item);
+                        }
+                    }
                 }
-                List<User> targetUserList= (List<User>) respMsg.data;
                 int importCount = 0;
                 for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {
                     XSSFRow row = sheet.getRow(rowIndex);
@@ -5142,17 +5165,35 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         userNameList.add(inchargerName);
                     }
                 }
-                System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
+                List<User> targetUserList=new ArrayList<>();
                 HttpRespMsg respMsg=new HttpRespMsg();
                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1&&userNameList.size()>0){
+                    System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
                     respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                     if(respMsg.code.equals("0")){
                         msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                         return msg;
                     }
+                    targetUserList= (List<User>) respMsg.data;
+                }
+                if(dingding!=null&&dingding.getSyncContact()==1&&userNameList.size()>0){
+                    System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
+                    for (String name : userNameList) {
+                        respMsg= companyDingdingService.getSearchUserInfo(dingding,name,1);
+                        SearchUserResponse searchUserResponse = (SearchUserResponse) respMsg.data;
+                        if(searchUserResponse.body.totalCount>0){
+                            msg.setError("姓名为["+name+"]的人员存在重复,请使用工号!");
+                            return msg;
+                        }
+                        if(searchUserResponse.body.list.size()>0){
+                            User item=new User();
+                            //为了修改代码 此处用企业微信同一个字段 setCorpwxUserid
+                            item.setName(name);
+                            item.setCorpwxUserid(searchUserResponse.body.list.get(0));
+                            targetUserList.add(item);
+                        }
+                    }
                 }
-                List<User> targetUserList= (List<User>) respMsg.data;
-                System.out.println(targetUserList);
                 List<String> existCodeList = new ArrayList<>();
                 int importCount = 0;
                 for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {

+ 24 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -1,6 +1,7 @@
 package com.management.platform.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
+import com.aliyun.dingtalkcontact_1_0.models.SearchUserResponse;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -229,6 +230,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
         User creator = userMapper.selectById(userId);
         Integer companyId = creator.getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id",companyId));
+        CompanyDingding dingding = companyDingdingService.getOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, companyId));
         List<Project> allProjectList = null;
         List<TaskGroup> allGroupList = null;
         if (isMultiProject == 1) {
@@ -303,18 +305,39 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                     System.out.println("===执行人为空===");
                 }
             }
+            List<User> targetUserList=new ArrayList<>();
             System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
             HttpRespMsg respMsg=new HttpRespMsg();
             boolean isCorpWxUser = false;
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1&&userNameList.size()>0){
                 isCorpWxUser = true;
+                System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
                 respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                 if(respMsg.code.equals("0")){
                     httpRespMsg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
                     return httpRespMsg;
                 }
+                targetUserList= (List<User>) respMsg.data;
+            }
+            if(dingding!=null&&dingding.getSyncContact()==1&&userNameList.size()>0){
+                isCorpWxUser = true;
+                System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
+                for (String name : userNameList) {
+                    respMsg= companyDingdingService.getSearchUserInfo(dingding,name,1);
+                    SearchUserResponse searchUserResponse = (SearchUserResponse) respMsg.data;
+                    if(searchUserResponse.body.totalCount>0){
+                        httpRespMsg.setError("姓名为["+name+"]的人员存在重复,请使用工号!");
+                        return httpRespMsg;
+                    }
+                    if(searchUserResponse.body.list.size()>0){
+                        User item=new User();
+                        //为了修改代码 此处用企业微信同一个字段 setCorpwxUserid
+                        item.setName(name);
+                        item.setCorpwxUserid(searchUserResponse.body.list.get(0));
+                        targetUserList.add(item);
+                    }
+                }
             }
-            List<User> targetUserList= (List<User>) respMsg.data;
             if (targetUserList == null) targetUserList = new ArrayList<>();
             //由于第一行需要指明列对应的标题
             for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {

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

@@ -2,6 +2,7 @@ package com.management.platform.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dingtalkcontact_1_0.models.SearchUserResponse;
 import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -856,6 +857,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         }
         Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
+        CompanyDingding dingding = companyDingdingService.getOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, companyId));
         HashMap<String, Object> data = new HashMap<>();
         httpRespMsg.data=data;
         //企业微信同步方式下,按姓名查找,需要去调用企微通讯录搜索接口
@@ -879,6 +881,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 data.put("total",total);
             }
             return httpRespMsg;
+        }else if (org.apache.commons.lang3.StringUtils.isNotBlank(keyword) && dingding!=null && dingding.getSyncContact()==1 && matchingType == 0){
+            System.out.println("====================开始查询通讯录名单======================");
+            HttpRespMsg searchUserInfo = companyDingdingService.getSearchUserInfo(dingding, keyword, 0);
+            SearchUserResponse searchUserResponse = (SearchUserResponse) searchUserInfo.data;
+            List users=searchUserResponse.body.list;
+            if (users.size() > 0){
+                List<User> realUser = userMapper.getUserByDepartment(null, companyId, null,null, null, null, null, users);
+                long total = realUser.size();
+                data.put("records",realUser);
+                data.put("nextCursor","");
+                data.put("total",total);
+            }else {
+                long total = 0;
+                data.put("records",new ArrayList<>());
+                data.put("nextCursor","");
+                data.put("total",total);
+            }
+            return httpRespMsg;
         }else {
             try {
                 TimeType timeType = timeTypeMapper.selectById(companyId);

+ 7 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

@@ -68,9 +68,13 @@
         left join user c on c.id = a.superior_id and c.company_id = #{companyId}
         WHERE a.company_id = #{companyId}
           <if test="corpwxUserIds != null">
-              AND a.corpwx_userid in
-                <foreach collection="corpwxUserIds" item="corpwxUserid" open="(" close=")" separator=",">
-                    #{corpwxUserid}</foreach>
+              AND (
+              a.corpwx_userid in
+              <foreach collection="corpwxUserIds" item="corpwxUserid" open="(" close=")" separator=",">
+                  #{corpwxUserid}</foreach>
+              or a.dingding_userid in
+              <foreach collection="corpwxUserIds" item="corpwxUserid" open="(" close=")" separator=",">
+                  #{corpwxUserid}</foreach>)
           </if>
         <if test="departmentId != null and companyId != ''">
             AND a.department_id = #{departmentId}