From 0500c65db2075416894e01a9689993555cc6104c Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 18 Jul 2025 13:28:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E4=BF=A1=E6=81=AF=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrganizationInfoController.java | 37 +++++ .../feishu/mapper/OrganizationInfoMapper.java | 45 ++++++ .../service/OrganizationInfoService.java | 37 +++++ .../impl/EmployeePanelServiceImpl.java | 6 +- .../impl/OrganizationInfoServiceImpl.java | 150 ++++++++++++++++++ .../mapper/OrganizationInfoMapper.xml | 25 +++ 6 files changed, 296 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/weaver/seconddev/feishu/controller/OrganizationInfoController.java create mode 100644 src/main/java/com/weaver/seconddev/feishu/mapper/OrganizationInfoMapper.java create mode 100644 src/main/java/com/weaver/seconddev/feishu/service/OrganizationInfoService.java create mode 100644 src/main/java/com/weaver/seconddev/feishu/service/impl/OrganizationInfoServiceImpl.java create mode 100644 src/main/resources/mapper/OrganizationInfoMapper.xml diff --git a/src/main/java/com/weaver/seconddev/feishu/controller/OrganizationInfoController.java b/src/main/java/com/weaver/seconddev/feishu/controller/OrganizationInfoController.java new file mode 100644 index 0000000..012e7a6 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/feishu/controller/OrganizationInfoController.java @@ -0,0 +1,37 @@ +package com.weaver.seconddev.feishu.controller; + +import com.weaver.common.authority.annotation.WeaPermission; +import com.weaver.seconddev.feishu.service.OrganizationInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/07/17 + * @version: 1.0 + */ +@Slf4j +@RestController +@RequestMapping("/api/secondev/org/info") +@WeaPermission(publicPermission = true) +public class OrganizationInfoController { + @Autowired + OrganizationInfoService organizationInfoService; + + @GetMapping("/getDepartmentInfo") + public Object getDepartmentInfo(@RequestParam(name = "code", required = false) String code, + @RequestParam(name = "oId", required = false) String oId) { + log.error("code=={},oId=={}", code, oId); + Map params = new HashMap<>(); + params.put("code", code); + params.put("oId", oId); + return organizationInfoService.getDepartmentInfo(params); + } +} diff --git a/src/main/java/com/weaver/seconddev/feishu/mapper/OrganizationInfoMapper.java b/src/main/java/com/weaver/seconddev/feishu/mapper/OrganizationInfoMapper.java new file mode 100644 index 0000000..8dcd19c --- /dev/null +++ b/src/main/java/com/weaver/seconddev/feishu/mapper/OrganizationInfoMapper.java @@ -0,0 +1,45 @@ +package com.weaver.seconddev.feishu.mapper; + +import com.weaver.seconddev.portal.entity.param.BaseParam; +import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/07/17 + * @version: 1.0 + */ +@Mapper +public interface OrganizationInfoMapper { + + /** + * 根据oId获取部门Id + * + * @param param + * @param oId + * @return + */ + Long getDepartmentIdByOId(@Param("param") BaseParam param, @Param("oId") String oId); + + /** + * 根据oId获取部门Code + * + * @param param + * @param id + * @return + */ + String getDepartmentCodeById(@Param("param") BaseParam param, @Param("id") Long id); + + /** + * 查询部门自定义表数据 + * + * @param param + * @param id + * @return + */ + @MapKey("departmentId") + Map getDepartmentCustomData(@Param("param") BaseParam param, @Param("id") Long id); +} diff --git a/src/main/java/com/weaver/seconddev/feishu/service/OrganizationInfoService.java b/src/main/java/com/weaver/seconddev/feishu/service/OrganizationInfoService.java new file mode 100644 index 0000000..bf2a4f1 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/feishu/service/OrganizationInfoService.java @@ -0,0 +1,37 @@ +package com.weaver.seconddev.feishu.service; + +import com.weaver.common.base.entity.result.WeaResult; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/07/17 + * @version: 1.0 + */ +public interface OrganizationInfoService { + + /** + * 获取部门信息 + * + * @param params + * @return + */ + WeaResult> getDepartmentInfo(Map params); + + /** + * 获取岗位信息 + * + * @param params + * @return + */ + WeaResult> getPositionInfo(Map params); + + /** + * 获取员工信息 + * + * @param params + * @return + */ + WeaResult> getEmployeeInfo(Map params); +} diff --git a/src/main/java/com/weaver/seconddev/feishu/service/impl/EmployeePanelServiceImpl.java b/src/main/java/com/weaver/seconddev/feishu/service/impl/EmployeePanelServiceImpl.java index d0858e8..5dfc56f 100644 --- a/src/main/java/com/weaver/seconddev/feishu/service/impl/EmployeePanelServiceImpl.java +++ b/src/main/java/com/weaver/seconddev/feishu/service/impl/EmployeePanelServiceImpl.java @@ -30,7 +30,6 @@ import java.util.Map; @Slf4j @Service public class EmployeePanelServiceImpl implements EmployeePanelService { - private static final String TENANT_KEY = "t024j0gfn0"; @Autowired EmployeePanelMapper employeePanelMapper; @@ -45,7 +44,7 @@ public class EmployeePanelServiceImpl implements EmployeePanelService { String endDateStr = Util.null2String(params.get("endDate")); BaseParam baseParam = new BaseParam(); - List userIdsByJobNum = userService.getUserIdsByJobNum(jobNum, TENANT_KEY); + List userIdsByJobNum = userService.getUserIdsByJobNum(jobNum, baseParam.getTenantKey()); if (CollectionUtils.isEmpty(userIdsByJobNum)) { return WeaResult.fail("未匹配到人员", true); } @@ -57,13 +56,12 @@ public class EmployeePanelServiceImpl implements EmployeePanelService { Date beginDate = parseDate(beginDateStr); Date endDate = parseDate(endDateStr); - Map> mapMap = employeePanelMapper.statsWorkTimeLength(baseParam, empIds, beginDate, endDate, TENANT_KEY, false, false); + Map> mapMap = employeePanelMapper.statsWorkTimeLength(baseParam, empIds, beginDate, endDate, baseParam.getTenantKey(), false, false); Map map = mapMap.get(BigDecimal.valueOf(employeeId)); log.error("map===>{}", map); EmployeeAttendInfoPo employeeAttendInfoPo = new EmployeeAttendInfoPo(); employeeAttendInfoPo.setExpectedAttendance(formatNumber(map.get("period_length_day").toString())); - //employeeAttendInfoPo.setActualAttendance(formatNumber(map.get("actual_work_length_day").toString())); employeeAttendInfoPo.setActualAttendance(formatNumber(map.get("work_length_day").toString())); return WeaResult.success(employeeAttendInfoPo); } diff --git a/src/main/java/com/weaver/seconddev/feishu/service/impl/OrganizationInfoServiceImpl.java b/src/main/java/com/weaver/seconddev/feishu/service/impl/OrganizationInfoServiceImpl.java new file mode 100644 index 0000000..6d1f241 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/feishu/service/impl/OrganizationInfoServiceImpl.java @@ -0,0 +1,150 @@ +package com.weaver.seconddev.feishu.service.impl; + +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.common.form.datasource.FormdataTemplateDetails; +import com.weaver.common.form.metadata.field.FormField; +import com.weaver.common.hr.util.Util; +import com.weaver.common.hrm.dao.HrmCommonDepartmentDao; +import com.weaver.common.hrm.dao.HrmCommonEmployeeDao; +import com.weaver.seconddev.feishu.mapper.OrganizationInfoMapper; +import com.weaver.seconddev.feishu.service.OrganizationInfoService; +import com.weaver.seconddev.portal.entity.param.BaseParam; +import com.weaver.seconddev.portal.mapper.EbuilderBaseMapper; +import com.weaver.seconddev.portal.mapper.EteamsBaseMapper; +import com.weaver.teams.domain.department.SimpleDepartment; +import com.weaver.teams.domain.user.SimpleEmployee; +import com.weaver.workflow.common.cfg.org.service.DepartMentService; +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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author:dxfeng + * @createTime: 2025/07/17 + * @version: 1.0 + */ +@Slf4j +@Service +public class OrganizationInfoServiceImpl implements OrganizationInfoService { + + @Autowired + DepartMentService departMentService; + + @Autowired + HrmCommonDepartmentDao hrmCommonDepartmentDao; + + @Autowired + HrmCommonEmployeeDao hrmCommonEmployeeDao; + + @Autowired + OrganizationInfoMapper organizationInfoMapper; + + @Autowired + EteamsBaseMapper eteamsBaseMapper; + + @Autowired + EbuilderBaseMapper ebuilderBaseMapper; + + + @Override + public WeaResult> getDepartmentInfo(Map params) { + BaseParam param = new BaseParam(); + String code = Util.null2String(params.get("code")); + String oId = Util.null2String(params.get("oId")); + SimpleDepartment department = null; + if (StringUtils.isNotBlank(oId)) { + Long departmentId = organizationInfoMapper.getDepartmentIdByOId(param, oId); + if (null != departmentId) { + code = organizationInfoMapper.getDepartmentCodeById(param, departmentId); + } + } + + // 查询部门信息 + if (StringUtils.isNotBlank(code)) { + department = hrmCommonDepartmentDao.getByCode(code, param.getTenantKey()); + } + if (null == department) { + return WeaResult.fail("部门不存在", true); + } + // 查询部门自定义表数据 + Map departmentCustomData = organizationInfoMapper.getDepartmentCustomData(param, department.getId()); + Map returnMap = new HashMap<>(); + + long formId = eteamsBaseMapper.getFormIdByTableName(param, param.getTable_dept_cus()); + FormField formField = eteamsBaseMapper.getFormFieldByFieldName(param, formId, "sqcj"); + List templateDetails = ebuilderBaseMapper.getFormdataTemplateDetails(param, formField.getDataTemplateId()); + Map sqcjMap = templateDetails.stream().collect(Collectors.toMap(FormdataTemplateDetails::getValueKey, FormdataTemplateDetails::getName)); + + + if (departmentCustomData != null && !departmentCustomData.isEmpty()) { + returnMap.put("oId", departmentCustomData.get("oid")); + returnMap.put("poId", departmentCustomData.get("poid")); + returnMap.put("sqcj", sqcjMap.get(Util.null2String(departmentCustomData.get("sqcj")))); + + String jobNum = ""; + String bmfzr = Util.null2String(departmentCustomData.get("bmfzr")); + if (StringUtils.isNotBlank(bmfzr)) { + SimpleEmployee byId = hrmCommonEmployeeDao.getById(Long.parseLong(bmfzr)); + if (null != byId) { + jobNum = byId.getJobNum(); + } + } + returnMap.put("bmfzr", jobNum); + + String hrbp = Util.null2String(departmentCustomData.get("hrbp")); + String hrbpxm = ""; + String hrbpgh = ""; + if (StringUtils.isNotBlank(hrbp)) { + SimpleEmployee byId = hrmCommonEmployeeDao.getById(Long.parseLong(hrbp)); + if (null != byId) { + hrbpxm = byId.getUsername(); + hrbpgh = byId.getJobNum(); + } + } + returnMap.put("hrbpxm", hrbpxm); + returnMap.put("hrbpgh", hrbpgh); + } + + returnMap.put("code", department.getCode()); + returnMap.put("name", department.getName()); + returnMap.put("dataRank", department.getDatarank()); + returnMap.put("status", department.isStatus() ? "1" : "0"); + List allDepartmentList = new ArrayList<>(); + getParentDeptList(department, allDepartmentList); + + String pathCode = allDepartmentList.stream().map(SimpleDepartment::getCode).collect(Collectors.joining("/")); + String pathName = allDepartmentList.stream().map(SimpleDepartment::getName).collect(Collectors.joining("/")); + + returnMap.put("pathCode", pathCode); + returnMap.put("pathName", pathName); + + + return WeaResult.success(returnMap); + } + + @Override + public WeaResult> getPositionInfo(Map params) { + return null; + } + + @Override + public WeaResult> getEmployeeInfo(Map params) { + return null; + } + + private void getParentDeptList(SimpleDepartment department, List parentDeptList) { + parentDeptList.add(department); + if (department.getParent() != null) { + getParentDeptList(department.getParent(), parentDeptList); + } + } + + +} diff --git a/src/main/resources/mapper/OrganizationInfoMapper.xml b/src/main/resources/mapper/OrganizationInfoMapper.xml new file mode 100644 index 0000000..5a6b593 --- /dev/null +++ b/src/main/resources/mapper/OrganizationInfoMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + +