From d7fae2b8c52cc526c4b22fd89b0346453302d09b Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 22 Jul 2025 14:24:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(organization):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=91=98=E5=B7=A5=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增员工信息查询接口和相关服务实现 - 添加城市和区域信息相关实体类和 mapper - 实现员工列表查询、员工详细信息获取等功能 - 优化数据处理逻辑,增加数据转换和格式化 --- .../OrganizationInfoController.java | 10 + .../organization/entity/po/Area.java | 21 ++ .../organization/entity/po/AreaExtends.java | 18 ++ .../organization/entity/po/HrmOffSpace.java | 19 ++ .../organization/mapper/CityMapper.java | 23 ++ .../mapper/OrganizationInfoMapper.java | 31 +++ .../impl/OrganizationInfoServiceImpl.java | 216 +++++++++++++++++- src/main/resources/mapper/CityMapper.xml | 27 +++ .../mapper/OrganizationInfoMapper.xml | 35 +++ 9 files changed, 393 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/weaver/seconddev/organization/entity/po/Area.java create mode 100644 src/main/java/com/weaver/seconddev/organization/entity/po/AreaExtends.java create mode 100644 src/main/java/com/weaver/seconddev/organization/entity/po/HrmOffSpace.java create mode 100644 src/main/java/com/weaver/seconddev/organization/mapper/CityMapper.java create mode 100644 src/main/resources/mapper/CityMapper.xml diff --git a/src/main/java/com/weaver/seconddev/organization/controller/OrganizationInfoController.java b/src/main/java/com/weaver/seconddev/organization/controller/OrganizationInfoController.java index 649e80b..00d5418 100644 --- a/src/main/java/com/weaver/seconddev/organization/controller/OrganizationInfoController.java +++ b/src/main/java/com/weaver/seconddev/organization/controller/OrganizationInfoController.java @@ -44,4 +44,14 @@ public class OrganizationInfoController { params.put("oId", oId); return organizationInfoService.getPositionInfo(params); } + + @GetMapping("/getEmployeeInfo") + public Object getEmployeeInfo(@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.getEmployeeInfo(params); + } } diff --git a/src/main/java/com/weaver/seconddev/organization/entity/po/Area.java b/src/main/java/com/weaver/seconddev/organization/entity/po/Area.java new file mode 100644 index 0000000..f4a522f --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/entity/po/Area.java @@ -0,0 +1,21 @@ +package com.weaver.seconddev.organization.entity.po; + +import lombok.Data; + +/** + * @author:dxfeng + * @createTime: 2025/07/22 + * @version: 1.0 + */ +@Data +public class Area { + private Long id; + private Long dataId; + private Long parentId; + private String name; + private String fullName; + private Long countryId; + private Long provinceId; + private Long cityId; + private Long districtId; +} diff --git a/src/main/java/com/weaver/seconddev/organization/entity/po/AreaExtends.java b/src/main/java/com/weaver/seconddev/organization/entity/po/AreaExtends.java new file mode 100644 index 0000000..673bdc3 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/entity/po/AreaExtends.java @@ -0,0 +1,18 @@ +package com.weaver.seconddev.organization.entity.po; + +import lombok.Data; + +/** + * @author:dxfeng + * @createTime: 2025/07/22 + * @version: 1.0 + */ +@Data +public class AreaExtends { + private Long id; + private Long dataId; + private String adCode; + private String cityCode; + private String airportCode; + private String zipCode; +} diff --git a/src/main/java/com/weaver/seconddev/organization/entity/po/HrmOffSpace.java b/src/main/java/com/weaver/seconddev/organization/entity/po/HrmOffSpace.java new file mode 100644 index 0000000..b650864 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/entity/po/HrmOffSpace.java @@ -0,0 +1,19 @@ +package com.weaver.seconddev.organization.entity.po; + +import lombok.Data; + +/** + * @author:dxfeng + * @createTime: 2025/07/22 + * @version: 1.0 + */ +@Data +public class HrmOffSpace { + private Long id; + private String shortName; + private String fullName; + private Long city; + private String province; + private String nation; + private Long dataId; +} diff --git a/src/main/java/com/weaver/seconddev/organization/mapper/CityMapper.java b/src/main/java/com/weaver/seconddev/organization/mapper/CityMapper.java new file mode 100644 index 0000000..88a3c58 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/organization/mapper/CityMapper.java @@ -0,0 +1,23 @@ +package com.weaver.seconddev.organization.mapper; + +import com.weaver.seconddev.organization.entity.po.Area; +import com.weaver.seconddev.organization.entity.po.AreaExtends; +import com.weaver.seconddev.organization.entity.po.HrmOffSpace; +import com.weaver.seconddev.portal.entity.param.BaseParam; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author:dxfeng + * @createTime: 2025/07/21 + * @version: 1.0 + */ +@Mapper +public interface CityMapper { + + HrmOffSpace getSpaceInfoById(@Param("param") BaseParam param, @Param("id") Long id); + + Area getAreaInfoById(@Param("param") BaseParam param, @Param("id") Long id); + + AreaExtends getAreaExtendsInfoById(@Param("param") BaseParam param, @Param("id") Long id); +} diff --git a/src/main/java/com/weaver/seconddev/organization/mapper/OrganizationInfoMapper.java b/src/main/java/com/weaver/seconddev/organization/mapper/OrganizationInfoMapper.java index 3720ae5..f22054e 100644 --- a/src/main/java/com/weaver/seconddev/organization/mapper/OrganizationInfoMapper.java +++ b/src/main/java/com/weaver/seconddev/organization/mapper/OrganizationInfoMapper.java @@ -1,8 +1,10 @@ package com.weaver.seconddev.organization.mapper; import com.weaver.seconddev.portal.entity.param.BaseParam; +import com.weaver.seconddev.portal.entity.po.PortalPO; 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; @@ -35,6 +37,7 @@ public interface OrganizationInfoMapper { /** * 统计部门列表 + * * @param param * @return */ @@ -78,4 +81,32 @@ public interface OrganizationInfoMapper { * @return */ int getPositionListSize(BaseParam param); + + + /** + * 获取员工列表 + * + * @param param + * @return + */ + @MapKey("id") + List> getEmployeeList(BaseParam param); + + /** + * 统计员工列表 + * + * @param param + * @return + */ + int getEmployeeListSize(BaseParam param); + + /** + * 获取成本中心数据 + * + * @param param + * @param id + * @return + */ + PortalPO getCostCenter(@Param("param") BaseParam param, @Param("id") Long id); + } 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 index 77f4f8d..7b02a2e 100644 --- a/src/main/java/com/weaver/seconddev/organization/service/impl/OrganizationInfoServiceImpl.java +++ b/src/main/java/com/weaver/seconddev/organization/service/impl/OrganizationInfoServiceImpl.java @@ -9,8 +9,14 @@ import com.weaver.common.hrm.cache.HrmDepartmentComInfo; 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.entity.po.Area; +import com.weaver.seconddev.organization.entity.po.AreaExtends; +import com.weaver.seconddev.organization.entity.po.HrmOffSpace; +import com.weaver.seconddev.organization.mapper.CityMapper; import com.weaver.seconddev.organization.mapper.OrganizationInfoMapper; import com.weaver.seconddev.organization.service.OrganizationInfoService; +import com.weaver.seconddev.portal.entity.param.BaseParam; +import com.weaver.seconddev.portal.entity.po.PortalPO; import com.weaver.seconddev.portal.mapper.EbuilderBaseMapper; import com.weaver.seconddev.portal.mapper.EteamsBaseMapper; import com.weaver.teams.domain.user.SimpleEmployee; @@ -34,12 +40,6 @@ import java.util.stream.Collectors; @Service public class OrganizationInfoServiceImpl implements OrganizationInfoService { - //@Autowired - //DepartMentService departMentService; - // - //@Autowired - //HrmCommonDepartmentDao hrmCommonDepartmentDao; - @Autowired HrmCommonEmployeeDao hrmCommonEmployeeDao; @@ -55,6 +55,8 @@ public class OrganizationInfoServiceImpl implements OrganizationInfoService { @Autowired HrmComInfoCacheHandler hrmComInfoCacheHandler; + @Autowired + CityMapper cityMapper; @Override public WeaResult> getDepartmentInfo(Map params) { @@ -171,7 +173,116 @@ public class OrganizationInfoServiceImpl implements OrganizationInfoService { @Override public WeaResult> getEmployeeInfo(Map params) { - return null; + + 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); + + long formId = ebuilderBaseMapper.getFormIdByTableName(param, "uf_jcl_employee_information"); + FormField formField = ebuilderBaseMapper.getFormFieldByFieldName(param, formId, "gzdssyyzx"); + FormField bzssqyField = ebuilderBaseMapper.getFormFieldByFieldName(param, formId, "bzssqy"); + + List templateDetails = ebuilderBaseMapper.getFormdataTemplateDetails(param, formField.getDataTemplateId()); + List bzssqyDetails = ebuilderBaseMapper.getFormdataTemplateDetails(param, bzssqyField.getDataTemplateId()); + + Map gzdssyyzxMap = templateDetails.stream().collect(Collectors.toMap(FormdataTemplateDetails::getValueKey, FormdataTemplateDetails::getName)); + Map bzssqyMap = bzssqyDetails.stream().collect(Collectors.toMap(FormdataTemplateDetails::getValueKey, FormdataTemplateDetails::getName)); + + + List> employeeList = organizationInfoMapper.getEmployeeList(param); + int total = organizationInfoMapper.getEmployeeListSize(param); + List> orgList = new ArrayList<>(); + for (Map map : employeeList) { + Map dataMap = new HashMap<>(); + dataMap.put("oId", map.get("oid")); + dataMap.put("jobNum", map.get("job_num")); + dataMap.put("userName", map.get("username")); + dataMap.put("sex", map.get("sex")); + dataMap.put("qh", map.get("qh")); + dataMap.put("mobile", map.get("mobile")); + dataMap.put(" zjlx", map.get(" zjlx")); + dataMap.put(" idNo", map.get(" id_no")); + dataMap.put("firstWorkDate", map.get(" first_work_date")); + dataMap.put("birthday", map.get(" birthday")); + dataMap.put("gryx", map.get("gryx")); + dataMap.put("email", map.get("email")); + dataMap.put("frgs", map.get("frgs")); + dataMap.put("alias", map.get("alias")); + dataMap.put("residencePlace", map.get("residence_place")); + dataMap.put("hireDate", map.get("hiredate")); + dataMap.put("dimissionDate", map.get("dimissiondate")); + dataMap.put("odeptid", map.get("odeptid")); + Long departmentId = Convert.toLong(map.get("department")); + HrmDepartmentComInfo department = hrmComInfoCacheHandler.getCacheById(HrmDepartmentComInfo.class, departmentId); + if (null != department) { + dataMap.put("deptCode", department.getCode()); + dataMap.put("deptName", department.getName()); + } else { + dataMap.put("deptCode", ""); + dataMap.put("deptName", ""); + } + dataMap.put("opositionid", map.get("opositionid")); + // 内容转换 + String gzdssyyzx = Util.null2String(map.get("gzdssyyzx")); + dataMap.put("yyzxcode", gzdssyyzx); + dataMap.put("yyzxname", gzdssyyzxMap.get(gzdssyyzx)); + + String bzssqy = Util.null2String(map.get("bzssqy")); + dataMap.put("qyname", bzssqyMap.get(bzssqy)); + + Long locationId = Convert.toLong(map.get("location")); + HrmOffSpace location = cityMapper.getSpaceInfoById(param, locationId); + log.error("location:{}", location); + if (null != location) { + dataMap.put("location", getFullAreaPath(param, location.getCity())); + dataMap.put("locationcode", getAreaCode(param, location.getCity())); + } else { + dataMap.put("location", ""); + dataMap.put("locationcode", ""); + } + + Long cbzx = Convert.toLong(map.get("cbzx")); + PortalPO costCenter = organizationInfoMapper.getCostCenter(param, cbzx); + if (null != costCenter) { + dataMap.put("cbzxname", costCenter.getName()); + dataMap.put("cbzxcode", costCenter.getValue()); + } else { + dataMap.put("cbzxname", ""); + dataMap.put("cbzxcode", ""); + } + + dataMap.put("superiorgh",getEmployeeJobNum(Convert.toStr(map.get("superior")))); + dataMap.put("other_superiorgh",getEmployeeJobNum(Convert.toStr(map.get("other_superior")))); + dataMap.put("company_year",map.get("sl")); + + Long jjr = Convert.toLong(map.get("jjr")); + SimpleEmployee jjrEmployee = hrmCommonEmployeeDao.getById(jjr); + if(null!=jjrEmployee){ + dataMap.put("jjrcode",jjrEmployee.getJobNum()); + dataMap.put("jjrname",jjrEmployee.getUsername()); + }else{ + dataMap.put("jjrcode", ""); + dataMap.put("jjrname", ""); + } + dataMap.put("personnel_status", map.get("personnel_status")); + dataMap.put("sfqdjyxy", map.get("sfqdjyxy")); + dataMap.put("sfktxyxt", map.get("sfktxyxt")); + orgList.add(dataMap); + } + + + Map returnMap = new HashMap<>(); + returnMap.put("data", orgList); + returnMap.put("current", current); + returnMap.put("total", total); + return WeaResult.success(returnMap); } @@ -192,4 +303,95 @@ public class OrganizationInfoServiceImpl implements OrganizationInfoService { } + /** + * 行政区划全路径名称 + * + * @param cityId + * @return + */ + public String getFullAreaPath(BaseParam param, Long cityId) { + Area area = cityMapper.getAreaInfoById(param, cityId); + log.error("area:{}", area); + if (null == area) { + return ""; + } + return getFullAreaPath(param, area); + } + + public String getAreaCode(BaseParam param, Long cityId) { + Area area = cityMapper.getAreaInfoById(param, cityId); + log.error("area:{}", area); + if (null == area) { + return ""; + } + return getAreaCode(param, area); + } + + /** + * 行政区划全路径名称 + * + * @param area + * @return + */ + public String getFullAreaPath(BaseParam param, Area area) { + Area country = cityMapper.getAreaInfoById(param, area.getCountryId()); + log.error("country:{}", country); + Area province = cityMapper.getAreaInfoById(param, area.getProvinceId()); + log.error("province:{}", province); + Area city = cityMapper.getAreaInfoById(param, area.getCityId()); + log.error("city:{}", city); + Area district = cityMapper.getAreaInfoById(param, area.getDistrictId()); + log.error("district:{}", district); + List pathList = new ArrayList<>(); + if (null != country) { + pathList.add(country.getName()); + } + if (null != province) { + pathList.add(province.getName()); + } + if (null != city) { + pathList.add(city.getName()); + } + if (null != district) { + pathList.add(district.getName()); + } + return StringUtils.join(pathList, "/"); + } + + /** + * 行政区划代码 + * + * @param area + * @return + */ + public String getAreaCode(BaseParam param, Area area) { + AreaExtends areaExtendsInfoById = cityMapper.getAreaExtendsInfoById(param, area.getId()); + log.error("areaExtendsInfoById:{}", areaExtendsInfoById); + if (null != areaExtendsInfoById) { + return areaExtendsInfoById.getAdCode(); + } + return ""; + } + + /** + * 获取员工工号 + * + * @param empId + * @return + */ + private String getEmployeeJobNum(String empId) { + if (StringUtils.isBlank(empId)) { + return ""; + } + List jobNumList = new ArrayList<>(); + String[] split = empId.split(","); + for (String empIdStr : split) { + SimpleEmployee employee = hrmCommonEmployeeDao.getById(Convert.toLong(empIdStr)); + if (null != employee) { + jobNumList.add(employee.getJobNum()); + } + } + return StringUtils.join(jobNumList, ","); + } + } diff --git a/src/main/resources/mapper/CityMapper.xml b/src/main/resources/mapper/CityMapper.xml new file mode 100644 index 0000000..fe65894 --- /dev/null +++ b/src/main/resources/mapper/CityMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/src/main/resources/mapper/OrganizationInfoMapper.xml b/src/main/resources/mapper/OrganizationInfoMapper.xml index 2b24a8e..48594a6 100644 --- a/src/main/resources/mapper/OrganizationInfoMapper.xml +++ b/src/main/resources/mapper/OrganizationInfoMapper.xml @@ -109,5 +109,40 @@ AND t2.oid = #{oId} + + + +