diff --git a/.gitignore b/.gitignore index 9154f4c..31e631b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,26 +1,19 @@ -# ---> Java -# Compiled class file -*.class +.iml +/out/ +/.idea/ -# Log file -*.log -# BlueJ files -*.ctxt +HELP.md +target/ -# Mobile Tools for Java (J2ME) -.mtj.tmp/ +### IntelliJ IDEA ### +.idea -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -replay_pid* +/src/test +/src/rebel.xml +/src/META-INF +### IntelliJ IDEA ### +/log +/build/ diff --git a/README.md b/README.md deleted file mode 100644 index 3f41104..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# secondev-chapanda-feishu - -secondev-chapanda-feishu \ No newline at end of file diff --git a/secondev-chapanda-organization.gradle b/secondev-chapanda-organization.gradle new file mode 100644 index 0000000..6b10660 --- /dev/null +++ b/secondev-chapanda-organization.gradle @@ -0,0 +1,6 @@ +description = "子模块demo项目" + +dependencies { + // 子项目私有依赖添加 + implementation project(':secondev-chapanda-portal') +} \ No newline at end of file diff --git a/src/main/java/com/weaver/seconddev/organization/controller/OrganizationInfoController.java b/src/main/java/com/weaver/seconddev/organization/controller/OrganizationInfoController.java new file mode 100644 index 0000000..424e444 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/controller/OrganizationInfoController.java @@ -0,0 +1,37 @@ +package com.weaver.seconddev.organization.controller; + +import com.weaver.common.authority.annotation.WeaPermission; +import com.weaver.seconddev.organization.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/organization/entity/param/OrgSearchCondition.java b/src/main/java/com/weaver/seconddev/organization/entity/param/OrgSearchCondition.java new file mode 100644 index 0000000..5edf354 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/entity/param/OrgSearchCondition.java @@ -0,0 +1,24 @@ +package com.weaver.seconddev.organization.entity.param; + +import com.weaver.seconddev.portal.entity.param.BaseParam; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author:dxfeng + * @createTime: 2025/07/21 + * @version: 1.0 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class OrgSearchCondition extends BaseParam { + private String code; + private String oId; + private Integer current; + private Integer offset; + private Integer pageSize; + + public Integer getOffset() { + return (current - 1) * pageSize; + } +} diff --git a/src/main/java/com/weaver/seconddev/organization/mapper/OrganizationInfoMapper.java b/src/main/java/com/weaver/seconddev/organization/mapper/OrganizationInfoMapper.java new file mode 100644 index 0000000..c99f60a --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/mapper/OrganizationInfoMapper.java @@ -0,0 +1,82 @@ +package com.weaver.seconddev.organization.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.List; +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); + + /** + * 获取部门列表 + * + * @param param + * @return + */ + @MapKey("departmentId") + List> getDepartmentList(BaseParam param); + + /** + * 统计部门列表 + * @param param + * @return + */ + int getDepartmentListSize(BaseParam param); + + /** + * 根据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); + + @MapKey("positionId") + Map getPosition(@Param("param") BaseParam param, @Param("oId") String oId, @Param("code") String code); + + /** + * 获取职位列表 + * + * @param param + * @return + */ + @MapKey("positionId") + List> getPositionList(@Param("param") BaseParam param); + + /** + * 统计职位列表 + * + * @param param + * @return + */ + int getPositionListSize(@Param("param") BaseParam param); +} diff --git a/src/main/java/com/weaver/seconddev/organization/service/OrganizationInfoService.java b/src/main/java/com/weaver/seconddev/organization/service/OrganizationInfoService.java new file mode 100644 index 0000000..db23d61 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/service/OrganizationInfoService.java @@ -0,0 +1,37 @@ +package com.weaver.seconddev.organization.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/organization/service/impl/OrganizationInfoServiceImpl.java b/src/main/java/com/weaver/seconddev/organization/service/impl/OrganizationInfoServiceImpl.java new file mode 100644 index 0000000..daf756b --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/service/impl/OrganizationInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.weaver.seconddev.organization.service.impl; + +import cn.hutool.core.convert.Convert; +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.cache.HrmDepartmentComInfo; +import com.weaver.common.hrm.dao.HrmCommonDepartmentDao; +import com.weaver.common.hrm.dao.HrmCommonEmployeeDao; +import com.weaver.common.hrm.manage.HrmComInfoCacheHandler; +import com.weaver.seconddev.organization.entity.param.OrgSearchCondition; +import com.weaver.seconddev.organization.mapper.OrganizationInfoMapper; +import com.weaver.seconddev.organization.service.OrganizationInfoService; +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; + + @Autowired + HrmComInfoCacheHandler hrmComInfoCacheHandler; + + + @Override + public WeaResult> getDepartmentInfo(Map params) { + OrgSearchCondition param = new OrgSearchCondition(); + String code = Util.null2String(params.get("code")); + String oId = Util.null2String(params.get("oId")); + int pageSize = Convert.toInt(params.get("pageSize"), 10); + int current = Convert.toInt(params.get("current"), 1); + + param.setCode(code); + param.setOId(oId); + param.setPageSize(pageSize); + param.setCurrent(current); + + + List> departmentList = organizationInfoMapper.getDepartmentList(param); + int total = organizationInfoMapper.getDepartmentListSize(param); + + // 遍历departmentList集合,处理数据 + 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)); + + List> orgList = new ArrayList<>(); + for (Map map : departmentList) { + Map newMap = new HashMap<>(); + newMap.put("oId", map.get("oid")); + newMap.put("poId", map.get("poid")); + newMap.put("sqcj", sqcjMap.get(Util.null2String(map.get("sqcj")))); + + String jobNum = ""; + String bmfzr = Util.null2String(map.get("bmfzr")); + if (StringUtils.isNotBlank(bmfzr)) { + SimpleEmployee byId = hrmCommonEmployeeDao.getById(Long.parseLong(bmfzr)); + if (null != byId) { + jobNum = byId.getJobNum(); + } + } + newMap.put("bmfzr", jobNum); + + String hrbp = Util.null2String(map.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(); + } + } + newMap.put("hrbpxm", hrbpxm); + newMap.put("hrbpgh", hrbpgh); + + HrmDepartmentComInfo department = hrmComInfoCacheHandler.getCacheById(HrmDepartmentComInfo.class, 1560052731319352218L); + + newMap.put("code", department.getCode()); + newMap.put("name", department.getName()); + newMap.put("dataRank", department.getDatarank()); + newMap.put("status", department.getStatus()); + List allDepartmentList = new ArrayList<>(); + getParentDeptList(department, allDepartmentList); + + String pathCode = allDepartmentList.stream().map(HrmDepartmentComInfo::getCode).collect(Collectors.joining("/")); + String pathName = allDepartmentList.stream().map(HrmDepartmentComInfo::getName).collect(Collectors.joining("/")); + + newMap.put("pathCode", pathCode); + newMap.put("pathName", pathName); + orgList.add(newMap); + } + Map returnMap = new HashMap<>(); + returnMap.put("data",orgList); + returnMap.put("current",current); + returnMap.put("total",total); + + return WeaResult.success(returnMap); + } + + @Override + public WeaResult> getPositionInfo(Map params) { + + Map returnMap = new HashMap<>(); + + return WeaResult.success(returnMap); + } + + @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); + } + } + + private void getParentDeptList(HrmDepartmentComInfo department, List parentDeptList) { + parentDeptList.add(department); + if (department.getParent() != null) { + HrmDepartmentComInfo cacheById = hrmComInfoCacheHandler.getCacheById(HrmDepartmentComInfo.class, department.getParent()); + getParentDeptList(cacheById, parentDeptList); + } + } + + +} diff --git a/src/main/resources/mapper/OrganizationInfoMapper.xml b/src/main/resources/mapper/OrganizationInfoMapper.xml new file mode 100644 index 0000000..d65b14e --- /dev/null +++ b/src/main/resources/mapper/OrganizationInfoMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + +