Explorar el Código

新增项目增加企业微信模块通讯录搜索功能
组织架构中新增按钮:修正工时所属部门

yurk hace 2 años
padre
commit
8c34d71c1f

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -1466,5 +1466,11 @@ public class ReportController {
     public HttpRespMsg pushReportDataToThird(String yearMonth){
         return reportService.pushReportDataToThird(yearMonth,request);
     }
+
+    //todo 修正员工工时
+    @RequestMapping("/correctWorkingTime")
+    public HttpRespMsg correctWorkingTime(String userIds,String startDate,String endDate){
+        return reportService.correctWorkingTime(userIds,startDate,endDate);
+    }
 }
 

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/DepartmentVO.java

@@ -14,6 +14,7 @@ public class DepartmentVO {
     private Integer id;
     private String label;
     private Integer parentId;
+    private Integer corpwxDeptid;
     private String managerId;
     private String reportAuditUserid;
     private List<DepartmentVO> children;

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -99,4 +99,6 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg pushReportDataToThird(String yearMonth,HttpServletRequest request);
 
     List<Map<String, Object>> getTaskReportList(Integer taskId);
+
+    HttpRespMsg correctWorkingTime(String userIds, String startDate, String endDate);
 }

+ 42 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -802,6 +802,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             //合计
             List<String> sumRow = new ArrayList<String>();
             //sumRow.add("合计");
+            //sumRow.add("合计");
             sumRow.add(MessageUtils.message("entry.total"));
             sumRow.add("");
             if(functionTimeList.size()>0){
@@ -913,11 +914,13 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
         HttpRespMsg msg = new HttpRespMsg();
         List<HashMap> userMapList = new ArrayList<>();
+        List<HashMap> deptMapList = new ArrayList<>();
         //通讯录查询人员
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
         if (StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
             HashMap<String, List> result = wxCorpInfoService.getOpenId(wxCorpInfo.getCorpid(), keyword, cursor,0,20);
             List users = result.get("user");
+            List depts = result.get("dept");
             if (users.size()!=0){
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));
                 if (realUser.size()!=0){
@@ -948,6 +951,26 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                     return msg;
                 }
             }
+            if (depts.size()!=0){
+                List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().in("corpwx_deptid", depts));
+                List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
+                List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("company_id", companyId));
+                //结果列表
+                List<DepartmentVO> list = new ArrayList<>();
+                List<Department> rootDepartments = departmentList.stream().filter(dept -> dept.getSuperiorId() == null).collect(Collectors.toList());
+                rootDepartments.forEach(root->{
+                    DepartmentVO rootDeptVO = formatDepartmentToVO(root, departmentOtherManagerList);
+                    list.add(rootDeptVO);
+                    fillSubDepartmentList(departmentList, rootDeptVO, departmentOtherManagerList);
+                });
+                //处理部门下人员列表
+                List<DepartmentVO> userListWithDept = getUserListWithDept(userList, list);
+                HashMap<String, Object> data = new HashMap<>();
+                data.put("data",userListWithDept);
+                data.put("nextCursor","");
+                msg.data = data;
+                return msg;
+            }
             ArrayList<Object> emptyList = new ArrayList<>();
             msg.data = emptyList;
             return msg;
@@ -975,6 +998,25 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         }
     }
 
+    public List<DepartmentVO> getUserListWithDept(List<User> userList,List<DepartmentVO> departmentVOList ){
+        if(departmentVOList!=null&&departmentVOList.size()>0){
+            for (DepartmentVO departmentVO : departmentVOList) {
+                List<HashMap> userMapList = new ArrayList<>();
+                List<User> collect = userList.stream().filter(ul -> ul.getDepartmentId() != null && ul.getDepartmentId().equals(departmentVO.getId())).collect(Collectors.toList());
+                for (User u : collect) {
+                    HashMap<String, Object> user = new HashMap<String, Object>();
+                    user.put("id", u.getId());
+                    user.put("name", u.getName());
+                    user.put("departmentId", u.getDepartmentId());
+                    userMapList.add(user);
+                }
+                departmentVO.setUserList(userMapList);
+                getUserListWithDept(userList,departmentVO.getChildren());
+            }
+        }
+        return departmentVOList;
+    }
+
     @Override
     public HttpRespMsg listMyMembs(HttpServletRequest request) {
         User currentUser = userMapper.selectById(request.getHeader("TOKEN"));

+ 30 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5201,6 +5201,36 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         return reportList;
     }
 
+    @Override
+    public HttpRespMsg correctWorkingTime(String userIds, String startDate, String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        QueryWrapper<Report> queryWrapper=new QueryWrapper<>();
+        if(startDate!=null&&endDate!=null){
+            queryWrapper.between("create_date",startDate,endDate);
+        }
+        String[] split = userIds.split(",");
+        List<String> userIdList = Arrays.asList(split);
+        queryWrapper.in("creator_id",userIdList);
+        List<Report> reportList = reportMapper.selectList(queryWrapper);
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", userIdList));
+        for (String userId : userIdList) {
+            //当前人员所填的日报数据
+            List<Report> list = reportList.stream().filter(rl -> rl.getCreatorId().equals(userId)).collect(Collectors.toList());
+            //当前人员
+            User user = userList.stream().filter(ul -> ul.getId().equals(userId)).findFirst().get();
+            //满足 与人员当前部门不相符的日报数据才发生变更
+            List<Report> needChangeReportList = list.stream().filter(l -> !l.getDeptId().equals(user.getDepartmentId())).collect(Collectors.toList());
+            needChangeReportList.forEach(nl->{
+                nl.setDeptId(user.getDepartmentId());
+            });
+            if(needChangeReportList.size()>0&&!updateBatchById(needChangeReportList)){
+                msg.setError(MessageUtils.message("Company.validationError"));
+                return msg;
+            }
+        }
+        return msg;
+    }
+
     private void selfUpdateToNextWorkFlow(Integer companyId, User auditTargetUser, List<Integer> targetRids, List<Department> allDepts) {
         List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
                 new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", companyId)

+ 18 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -1810,6 +1810,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     public HashMap<String, List> getOpenId(String corpId,String keyword,String cursor,Integer queryType,Integer limit) throws Exception {
         HashMap<String, List> result = new HashMap<>();
         List<Object> user = new ArrayList<>();
+        List<Object> dept = new ArrayList<>();
         String itemCursor = "";
         String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
         HttpHeaders headers = new HttpHeaders();
@@ -1836,11 +1837,22 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                 if (respJson.getInteger("errcode")==0){
                     JSONObject queryResult = respJson.getJSONObject("query_result");
                     if (!queryResult.isEmpty()){
-                        JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
-                        if (jsonArray!=null){
-                            Object[] objects = jsonArray.toArray();
-                            for (Object object : objects) {
-                                user.add(object);
+                        if(queryResult.getJSONObject("user")!=null){
+                            JSONArray userJsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
+                            if (userJsonArray!=null){
+                                Object[] objects = userJsonArray.toArray();
+                                for (Object object : objects) {
+                                    user.add(object);
+                                }
+                            }
+                        }
+                        if(queryResult.getJSONObject("party")!=null){
+                            JSONArray deptJsonArray = queryResult.getJSONObject("party").getJSONArray("department_id");
+                            if (deptJsonArray!=null){
+                                Object[] objects = deptJsonArray.toArray();
+                                for (Object object : objects) {
+                                    dept.add(object);
+                                }
                             }
                         }
                     }else{
@@ -1862,6 +1874,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         nextCursor.add(itemCursor);
         result.put("nextCursor",nextCursor);
         result.put("user",user);
+        result.put("dept",dept);
         return result;
     }
 }