浏览代码

美莱德假期剩余表复选部门以及导出增加部门列

cs 2 年之前
父节点
当前提交
42de6595ed

+ 71 - 15
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserYearleaveSettingController.java

@@ -9,17 +9,20 @@ import com.dingtalk.api.DingTalkClient;
 import com.dingtalk.api.request.OapiAttendanceVacationTypeListRequest;
 import com.dingtalk.api.response.OapiAttendanceVacationTypeListResponse;
 import com.management.platform.entity.*;
+import com.management.platform.entity.vo.DdLeaveQtVo;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
 import com.management.platform.service.CompanyDingdingService;
 import com.management.platform.service.DingDingService;
 import com.management.platform.service.ExcelExportService;
 import com.management.platform.service.UserYearleaveSettingService;
+import com.management.platform.service.impl.ProjectServiceImpl;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.ListUtil;
 import com.management.platform.util.MessageUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RequestParam;
@@ -27,10 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -117,17 +117,19 @@ public class UserYearleaveSettingController {
 
     /**
      *
-     * @param leaveCode 请假类型代码
-     * @param companyId 公司id (必传
-     * @param departmentId 部门id
-     * @param userId 员工id
+     * @param ddLeaveQtVo 请求相关参数
      * @param pageIndex 页码
      * @return
      */
     @RequestMapping("/getDingDingLeaveQt")
-    public HttpRespMsg getDingDingLeaveQt(String leaveCode, Integer companyId, Integer departmentId, String userId,@RequestParam(required = false, defaultValue = "1") Integer pageIndex) {
+    public HttpRespMsg getDingDingLeaveQt(DdLeaveQtVo ddLeaveQtVo, @RequestParam(required = false, defaultValue = "1") Integer pageIndex) {
         QueryWrapper<LeaveQuotaNum> quotaNumQueryWrapper = new QueryWrapper<>();
+        String leaveCode = ddLeaveQtVo.getLeaveCode();
+        Integer[] departmentId = ddLeaveQtVo.getDepartmentId();
+        String userId = ddLeaveQtVo.getUserId();
+        Integer companyId = ddLeaveQtVo.getCompanyId();
         quotaNumQueryWrapper.eq("company_id", companyId);
+        ArrayList<Integer> deptList = null;
         HashMap map = new HashMap();
         if (leaveCode == null) {
             List<LeaveType> typeList = leaveTypeMapper.selectList(new QueryWrapper<LeaveType>().eq("company_id", companyId));
@@ -166,15 +168,22 @@ public class UserYearleaveSettingController {
             if (userId != null) {
                 String dingdingUserid = userMapper.selectById(userId).getDingdingUserid();
                 quotaNumQueryWrapper.eq("user_dingding_id", dingdingUserid);
-            } else if (departmentId != null) {
+            } else if (departmentId!=null) {
+                deptList = new ArrayList<>(Arrays.asList(departmentId));
                 //指定部门
-                Department dept = departmentMapper.selectById(departmentId);
+                List<Department> dept = departmentMapper.selectBatchIds(deptList);
                 List<Department> allDept = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-                List<Department> allSubDepts = getSubDeptList(allDept, dept);
+                List<Department> allSubDepts = new ArrayList<>();
+                for (Department department : dept) {
+                    allSubDepts.addAll(getSubDeptList(allDept, department));
+                }
                 List<User> userList = userMapper.selectList(
                         new QueryWrapper<User>()
                                 .in("department_id", allSubDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList())));
                 List<String> userDDIds = userList.stream().map(User::getDingdingUserid).collect(Collectors.toList());
+                if (userDDIds.size() == 0){
+                    userDDIds.add("");
+                }
                 quotaNumQueryWrapper.in("user_dingding_id", userDDIds);
             }
         }
@@ -192,17 +201,56 @@ public class UserYearleaveSettingController {
         return msg;
     }
 
+    //递归获取所有上级部门字符串,格式:"上级部门/上级部门/部门"
+    private String getSupDepartment(Department department) {
+        String depHierarchy = department.getDepartmentName();
+        //搜到父部门进行添加
+        if (department.getSuperiorId()==null) {
+            return depHierarchy;
+        } else {
+            Department supDep = departmentMapper.selectById(department.getSuperiorId());
+            return getSupDepartment(supDep) + "/" + depHierarchy;
+        }
+    }
+
+    //递归获取企业微信所有上级部门字符串,格式:"上级部门/上级部门/部门"
+    private String getWxDepartment(Department department) {
+        String depHierarchy = "$departmentName="+department.getCorpwxDeptid()+"$";
+        //搜到父部门进行添加
+        if (department.getCorpwxDeptpid()==null || department.getCorpwxDeptpid()==1) {
+            return depHierarchy;
+        }else{
+            Department supDep = departmentMapper.selectOne(new QueryWrapper<Department>().eq("corpwx_deptid",department.getCorpwxDeptpid()));
+            return getWxDepartment(supDep) + "/" + depHierarchy;
+        }
+    }
+
     //导出剩余假期
     @RequestMapping("/exportDingDingLeaveQt")
-    public HttpRespMsg exportDingDingLeaveQt(String leaveCode, Integer companyId, Integer departmentId, String userId){
+    public HttpRespMsg exportDingDingLeaveQt(DdLeaveQtVo ddLeaveQtVo){
         HttpRespMsg httpRespMsg = new HttpRespMsg();
+        Integer companyId = ddLeaveQtVo.getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id",companyId));
         List<String> headList = new ArrayList<>();
         List<List<String>> allList = new ArrayList<>();
-        HttpRespMsg dingDingLeaveQt = getDingDingLeaveQt(leaveCode, companyId, departmentId, userId, 1);
+        HttpRespMsg dingDingLeaveQt = getDingDingLeaveQt(ddLeaveQtVo, 1);
         HashMap map = (HashMap)dingDingLeaveQt.data;
         List<LeaveQuotaNum> records = (List<LeaveQuotaNum>)map.get("records");
         Long total = (Long) map.get("total");
+        List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        List<User> user = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
+        List<HashMap<String,Object>> deptMap = new ArrayList<>();
+        for (Department department : deptName) {
+            department.setDepartmentName(getSupDepartment(department));
+            for (User userItem : user) {
+                if (userItem.getDepartmentId().equals(department.getDepartmentId())){
+                    HashMap<String, Object> mapItem = new HashMap<>();
+                    mapItem.put("ddUserId",userItem.getDingdingUserid());
+                    mapItem.put("deptName",department.getDepartmentName());
+                    deptMap.add(mapItem);
+                }
+            }
+        }
         Long j = 0L;
         if (total!=0){
             j = total / 50;
@@ -210,12 +258,14 @@ public class UserYearleaveSettingController {
                 j += 1;
             }
         }
+        //        headList.add("部门");
         //        headList.add("员工姓名");
         //        headList.add("有效期");
         //        headList.add("总额度");
         //        headList.add("已使用");
         //        headList.add("剩余额度");
         headList.add(MessageUtils.message("entry.staffName"));
+        headList.add(MessageUtils.message("excel.department"));
         headList.add(MessageUtils.message("excel.validity"));
         headList.add(MessageUtils.message("leave.totalAmount"));
         headList.add(MessageUtils.message("leave.used"));
@@ -226,15 +276,21 @@ public class UserYearleaveSettingController {
                 break;
             }
             for (LeaveQuotaNum record : records) {
+                for (HashMap<String, Object> stringMap : deptMap) {
+                    if (record.getUserDingdingId().equals(stringMap.get("ddUserId"))){
+                        record.setDepartment(stringMap.get("deptName").toString());
+                    }
+                }
                 ArrayList<String> data = new ArrayList<>();
                 data.add(record.getName());
+                data.add(record.getDepartment()==null?"未分配":record.getDepartment());
                 data.add(record.getStartTime()+" - "+record.getEndTime());
                 data.add(record.getQuotaInHours()+"h");
                 data.add(record.getUsedInHours()+"h");
                 data.add(record.getLeftInHours()+"h");
                 allList.add(data);
             }
-            dingDingLeaveQt = getDingDingLeaveQt(leaveCode, companyId, departmentId, userId, i);
+            dingDingLeaveQt = getDingDingLeaveQt(ddLeaveQtVo, i);
             map = (HashMap)dingDingLeaveQt.data;
             records = (List<LeaveQuotaNum>)map.get("records");
         }

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LeaveQuotaNum.java

@@ -27,6 +27,9 @@ public class LeaveQuotaNum extends Model<LeaveQuotaNum> {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
+    @TableField(exist = false)
+    private String department;
+
     @TableField("company_id")
     private Integer companyId;
 

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/DdLeaveQtVo.java

@@ -0,0 +1,18 @@
+package com.management.platform.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @author cs
+ * @version 1.0
+ * @ClassName DdLeaveQtVo
+ * @Description
+ * @date 2022-11-03 11:42
+ */
+@Data
+public class DdLeaveQtVo {
+    private String leaveCode;
+    private Integer companyId;
+    private Integer[] departmentId;
+    private String userId;
+}