经理门户接口

This commit is contained in:
dxfeng 2025-07-09 19:00:32 +08:00
parent e11faa7628
commit 90b9b68704
6 changed files with 363 additions and 0 deletions

View File

@ -0,0 +1,44 @@
package com.weaver.seconddev.portal.controller;
import com.weaver.common.authority.annotation.WeaPermission;
import com.weaver.common.base.entity.result.WeaResult;
import com.weaver.seconddev.portal.service.ManagerPortalService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2025/07/09
* @version: 1.0
*/
@Slf4j
@RestController
@RequestMapping("/api/secondev/portal/manager")
@WeaPermission(publicPermission = true)
public class ManagerPortalController {
@Autowired
ManagerPortalService managerPortalService;
@PostMapping("/getMangerInfo")
private WeaResult<Map<String, Object>> getMangerInfo(@RequestBody Map<String, String> params) {
return managerPortalService.getMangerInfo(params);
}
@PostMapping("/getTodayOverview")
private WeaResult<Map<String, Object>> getTodayOverview(@RequestBody Map<String, String> params) {
return managerPortalService.getTodayOverview(params);
}
@PostMapping("/getBasicPersonnel")
private WeaResult<Map<String, Object>> getBasicPersonnel(@RequestBody Map<String, String> params) {
return managerPortalService.getBasicPersonnel(params);
}
}

View File

@ -0,0 +1,19 @@
package com.weaver.seconddev.portal.entity.param;
import lombok.Data;
import java.util.Set;
/**
* @author:dxfeng
* @createTime: 2025/07/08
* @version: 1.0
*/
@Data
public class BasicPersonnelParam {
private Set<Long> departmentIdList;
private String searchType;
private String startDate;
private String endDate;
private String tenantKey;
}

View File

@ -0,0 +1,56 @@
package com.weaver.seconddev.portal.mapper;
import com.weaver.seconddev.portal.entity.param.BasicPersonnelParam;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author:dxfeng
* @createTime: 2025/07/08
* @version: 1.0
*/
@Mapper
public interface ManagerPortalMapper {
/**
* 在职人数
*
* @param param
* @return
*/
int getOnJobNum(BasicPersonnelParam param);
/**
* 离职人数
*
* @param param
* @return
*/
int getResignNumber(BasicPersonnelParam param);
/**
* 离职流程中人数
*
* @param param
* @return
*/
int getResigningNumber(BasicPersonnelParam param);
/**
* 入职流程中人数
*
* @param param
* @return
*/
int getEntryingNumber(BasicPersonnelParam param);
/**
* 获取所负责的顶级部门
*
* @param tenantKey
* @param emdId
* @return
*/
List<Long> getManageDeptIds(@Param("tenantKey") String tenantKey, @Param("empId") Long emdId);
}

View File

@ -0,0 +1,41 @@
package com.weaver.seconddev.portal.service;
import com.weaver.common.base.entity.result.WeaResult;
import java.util.Map;
/**
* 经理门户
*
* @author:dxfeng
* @createTime: 2025/07/08
* @version: 1.0
*/
public interface ManagerPortalService {
/**
* 经理信息
*
* @param params
* @return
*/
WeaResult<Map<String, Object>> getMangerInfo(Map<String, String> params);
/**
* 今日概况
*
* @param params
* @return
*/
WeaResult<Map<String, Object>> getTodayOverview(Map<String, String> params);
/**
* 基础人事
*
* @param params
* @return
*/
WeaResult<Map<String, Object>> getBasicPersonnel(Map<String, String> params);
}

View File

@ -0,0 +1,133 @@
package com.weaver.seconddev.portal.service.impl;
import com.weaver.common.base.entity.result.WeaResult;
import com.weaver.common.hrm.cache.HrmDepartmentComInfo;
import com.weaver.common.hrm.dao.HrmCommonDepartmentDao;
import com.weaver.common.hrm.manage.HrmComInfoCacheHandler;
import com.weaver.seconddev.portal.entity.param.BasicPersonnelParam;
import com.weaver.seconddev.portal.mapper.ManagerPortalMapper;
import com.weaver.seconddev.portal.service.ManagerPortalService;
import com.weaver.seconddev.portal.util.DateUtil;
import com.weaver.teams.security.context.UserContext;
import com.weaver.teams.security.user.User;
import com.weaver.workflow.common.cfg.org.service.DepartMentService;
import com.weaver.workflow.common.entity.org.WeaDepartMent;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* 经理门户
*
* @author:dxfeng
* @createTime: 2025/07/08
* @version: 1.0
*/
@Slf4j
@Service
public class ManagerPortalServiceImpl implements ManagerPortalService {
@Autowired
ManagerPortalMapper managerPortalMapper;
@Autowired
DepartMentService departMentService;
@Autowired
HrmCommonDepartmentDao hrmCommonDepartmentDao;
@Autowired
HrmComInfoCacheHandler hrmComInfoCacheHandler;
@Override
public WeaResult<Map<String, Object>> getMangerInfo(Map<String, String> params) {
User currentUser = UserContext.getCurrentUser();
Set<Long> allDepartmentIds = getAllDepartmentIdList(currentUser);
List<HrmDepartmentComInfo> departmentList = hrmComInfoCacheHandler.getCacheList(HrmDepartmentComInfo.class, allDepartmentIds);
// 获取顶级部门
List<HrmDepartmentComInfo> topDepartmentList = departmentList.stream()
.filter(dept -> !allDepartmentIds.contains(dept.getParent()))
.collect(Collectors.toList());
List<String> departmentNames = topDepartmentList.stream().map(HrmDepartmentComInfo::getName).collect(Collectors.toList());
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("deptNames", StringUtils.join(departmentNames, ""));
returnMap.put("userName", currentUser.getUsername());
return WeaResult.success(returnMap);
}
@Override
public WeaResult<Map<String, Object>> getTodayOverview(Map<String, String> params) {
return null;
}
@Override
public WeaResult<Map<String, Object>> getBasicPersonnel(Map<String, String> params) {
Map<String, Object> returnMap = new HashMap<>();
String searchType = params.get("searchType");
String searchDate = params.get("searchDate");
String departmentIds = params.get("departmentIds");
User currentUser = UserContext.getCurrentUser();
Set<Long> allDepartmentIdList = getAllDepartmentIdList(currentUser);
BasicPersonnelParam basicPersonnelParam = new BasicPersonnelParam();
basicPersonnelParam.setTenantKey(currentUser.getTenantKey());
// 设置部门范围ID集合
basicPersonnelParam.setDepartmentIdList(allDepartmentIdList);
if ("year".equals(searchType)) {
// 开始时间年度第一天
basicPersonnelParam.setStartDate(searchDate + "-01-01");
// 结束时间年度最后一天
basicPersonnelParam.setEndDate(StringUtils.isBlank(searchDate) ? DateUtil.getCurrentDateStr() : searchDate + "-12-31");
} else if ("month".equals(searchType)) {
// 开始时间月度第一天
basicPersonnelParam.setStartDate(searchDate + "-01");
// 结束时间月度最后一天
basicPersonnelParam.setEndDate(StringUtils.isBlank(searchDate) ? DateUtil.getCurrentDateStr() : DateUtil.getLastDayOfPreviousMonthStr(searchDate + "-01"));
}
int onJobNum = managerPortalMapper.getOnJobNum(basicPersonnelParam);
int resignNumber = managerPortalMapper.getResignNumber(basicPersonnelParam);
int resigningNumber = managerPortalMapper.getResigningNumber(basicPersonnelParam);
int entryingNumber = managerPortalMapper.getEntryingNumber(basicPersonnelParam);
// 在职人数
returnMap.put("onJobNumber", onJobNum);
// 年度离职人数
returnMap.put("resignNumber", resignNumber);
// 半年度入职人数
returnMap.put("entryNumber", 7);
// 离职流程中人数
returnMap.put("resigningNumber", resigningNumber);
// 入职流程中人数
returnMap.put("entryingNumber", entryingNumber);
returnMap.put("basicPersonnelParam", basicPersonnelParam);
return WeaResult.success(returnMap);
}
/**
* 获取用户当前所负责的所有的部门以及下级部门
*
* @return
*/
private Set<Long> getAllDepartmentIdList(User currentUser) {
// 查询所负责的部门
List<Long> manageDeptIds = managerPortalMapper.getManageDeptIds(currentUser.getTenantKey(), currentUser.getEmployeeId());
// 查询所有的部门子部门信息
Set<WeaDepartMent> allDepartmentList = new HashSet<>();
for (Long manageDeptId : manageDeptIds) {
WeaDepartMent departMentById = departMentService.getDepartMentById(manageDeptId);
List<WeaDepartMent> beLongDeps = departMentService.getBeLongDeps(manageDeptId);
allDepartmentList.add(departMentById);
allDepartmentList.addAll(beLongDeps);
}
return allDepartmentList.stream().map(WeaDepartMent::getDepartMentId).collect(Collectors.toSet());
}
}

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.weaver.seconddev.portal.mapper.ManagerPortalMapper">
<select id="getOnJobNum" resultType="java.lang.Integer">
SELECT COUNT(t.id) AS value
FROM e10_common.uf_jcl_employee_information t
WHERE t.delete_type = 0
AND t.tenant_key = #{tenantKey}
<if test="departmentIdList != null and departmentIdList.size() > 0">
AND t.department IN
<foreach collection="departmentIdList" item="departmentId" open="(" close=")" separator=",">
#{departmentId}
</foreach>
</if>
AND t.hiredate &lt;= #{endDate}
AND (t.zhgzr &gt;= #{startDate}
OR t.zhgzr IS NULL
OR t.zhgzr = '')
</select>
<select id="getResignNumber" resultType="java.lang.Integer">
select count(id) as value from e10_common.uf_jcl_lzxxjl t
where t.delete_type = 0 and t.tenant_key = #{tenantKey}
<if test="departmentIdList != null and departmentIdList.size() > 0">
AND t.lzqbm IN
<foreach collection="departmentIdList" item="departmentId" open="(" close=")" separator=",">
#{departmentId}
</foreach>
</if>
and t.zhgzr &gt;= #{startDate}
and t.zhgzr &lt;= #{endDate}
</select>
<select id="getResigningNumber" resultType="java.lang.Integer">
select count(t.id) from e10_common.uf_jcl_lzsq t
where t.delete_type = 0 and t.tenant_key = #{tenantKey}
<!--审批中-->
and t.flow_status in (0,1,2)
<!--申请日期-->
and t.sqrq &gt;= #{startDate}
and t.sqrq &lt;= #{endDate}
</select>
<select id="getEntryingNumber" resultType="java.lang.Integer">
select count(t.id) from e10_common.uf_jcl_rzsq t
where t.delete_type = 0 and t.tenant_key = #{tenantKey}
<!--审批中-->
and t.flow_status in (0,1,2)
<!--申请日期-->
and t.sqsj &gt;= #{startDate}
and t.sqsj &lt;= #{endDate}
</select>
<select id="getManageDeptIds" resultType="java.lang.Long">
select t.id
from eteams.department t
inner join eteams.ft_1154218872715993098 t2 on t.formdata = t2.id
where t.type = 'department'
and t.delete_type = 0
and t.status = 1
and t.tenant_key = #{tenantKey}
and t2.tenant_key = #{tenantKey}
and t2.delete_type = 0
and t2.bmfzr = #{empId}
</select>
</mapper>