人员信息接口及全量组织树接口

顺胜组织架构图
Chengliang 1 year ago
parent b1dd8815d7
commit 21012a17f3

@ -0,0 +1,3 @@
roleId=67
rolelevel=2
fieldid=field19

@ -16,9 +16,9 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
public class ChartChildrensVO { public class ChartChildrensVO {
private Integer id; private String id;
private Integer pid; private String pid;
private String label; private String label;

@ -0,0 +1,32 @@
package com.engine.sship.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2024/1/4 3:22 PM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PersonTablePO {
private Integer id;
private String lastname;
private String workcode;
private Integer sex;
private Integer managerid;
private String loginid;
}

@ -0,0 +1,23 @@
package com.engine.sship.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2024/1/4 3:26 PM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PersonTableParam {
//todo 分页参数
private String id;
}

@ -0,0 +1,34 @@
package com.engine.sship.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2024/1/4 3:17 PM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PersonTableVO {
private Integer id;
private String lastname;
private String workcode;
private String sex;
private String manager;
private String loginid;
}

@ -8,13 +8,16 @@ import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
/**
* @author apple
*/
@Data @Data
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class TreeDataVO { public class TreeDataVO {
private Integer id; private String id;
private String label; private String label;

@ -1,7 +1,12 @@
package com.engine.sship.service; package com.engine.sship.service;
import com.engine.sship.entity.ChartChildrensVO; import com.engine.sship.entity.PersonTableParam;
import com.engine.sship.entity.PersonTableVO;
import com.engine.sship.entity.TreeDataVO;
import java.util.List;
/** /**
* @author apple * @author apple
@ -9,6 +14,15 @@ import com.engine.sship.entity.ChartChildrensVO;
public interface OrgChartService { public interface OrgChartService {
/**
* @Description: Id
* @Author: liang.cheng
* @Date: 2024/1/3 3:16 PM
* @param: [roleId, rolelevel]
* @return: int
*/
boolean selectIdsByRole(String roleId,String rolelevel);
/** /**
* @Description: * @Description:
* @Author: liang.cheng * @Author: liang.cheng
@ -16,5 +30,24 @@ public interface OrgChartService {
* @param: [] * @param: []
* @return: com.engine.sship.entity.ChartChildrensVO * @return: com.engine.sship.entity.ChartChildrensVO
*/ */
ChartChildrensVO selectResourceChart(); TreeDataVO selectResourceChart();
/**
* @Description: SiteHead
* @Author: liang.cheng
* @Date: 2024/1/3 4:23 PM
* @param: []
* @return: java.util.List<java.lang.Integer>
*/
List<Integer> selectCusSiteHead();
/**
* @Description:
* @Author: liang.cheng
* @Date: 2024/1/4 3:29 PM
* @param: [personTableParam]
* @return: com.engine.sship.entity.PersonTableVO
*/
List<PersonTableVO> selectPerson(PersonTableParam personTableParam);
} }

@ -1,8 +1,22 @@
package com.engine.sship.service.impl; package com.engine.sship.service.impl;
import com.engine.common.service.HrmCommonService;
import com.engine.common.service.impl.HrmCommonServiceImpl;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.engine.sship.entity.ChartChildrensVO; import com.engine.sship.entity.*;
import com.engine.sship.service.OrgChartService; import com.engine.sship.service.OrgChartService;
import com.weaver.general.BaseBean;
import com.weaver.general.Util;
import lombok.SneakyThrows;
import weaver.conn.RecordSet;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.resource.ResourceComInfo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/** /**
@ -13,9 +27,192 @@ import com.engine.sship.service.OrgChartService;
*/ */
public class OrgChartServiceImpl extends Service implements OrgChartService { public class OrgChartServiceImpl extends Service implements OrgChartService {
private HrmCommonService hrmCommonService = new HrmCommonServiceImpl();
@Override
public boolean selectIdsByRole(String roleId,String rolelevel) {
String roleMemberIds = hrmCommonService.getRoleMemberIds(roleId, rolelevel);
List<String> roleMemberList = Arrays.stream(roleMemberIds.split(","))
.filter(s -> !s.isEmpty())
.collect(Collectors.toList());
return roleMemberList.stream()
.anyMatch(s -> Integer.parseInt(s) == user.getUID());
}
@Override
public TreeDataVO selectResourceChart() {
BaseBean bb = new BaseBean();
String roleId = bb.getPropValue("sship", "roleId");
String rolelevel = bb.getPropValue("sship", "rolelevel");
boolean isExsit = selectIdsByRole(roleId, rolelevel);
if (isExsit || (user.getUID() == 1)) {
return getAllTreeData();
}
return getBaseTreeData();
}
@Override
public List<Integer> selectCusSiteHead() {
RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
String fieldid = bb.getPropValue("sship", "fieldid");
List<Integer> ids = new ArrayList<>();
rs.executeQuery("select id from cus_fielddata where "+fieldid+" = 3 and scopeid = 3 and scope = 'HrmCustomFieldByInfoType'");
while (rs.next()) {
ids.add(Util.getIntValue(rs.getString("id")));
}
return ids;
}
@SneakyThrows
@Override @Override
public ChartChildrensVO selectResourceChart() { public List<PersonTableVO> selectPerson(PersonTableParam personTableParam) {
List<PersonTablePO> poList;
ResourceComInfo rInfo = new ResourceComInfo();
switch(personTableParam.getId()){
case "S-1":
poList = selectByLevel(5);
break;
case "C-1":
poList = selectByLevel(4);
break;
default:
poList = selectByDeptId(personTableParam.getId());
}
return poList.stream()
.map(po -> new PersonTableVO(po.getId(), po.getLastname(), po.getWorkcode(),
po.getSex() == 0 ? "男" : "女",
po.getManagerid() != null ? rInfo.getLastname(String.valueOf(po.getManagerid())) : "",
po.getLoginid()))
.collect(Collectors.toList());
}
private List<PersonTablePO> selectByLevel(Integer level) {
RecordSet rs = new RecordSet();
List<PersonTablePO> poList = new ArrayList<>();
BaseBean bb = new BaseBean();
//String fieldid = bb.getPropValue("sship.properties", "fieldid");
String fieldid = "field19";
rs.executeQuery("select h.id,h.lastname,h.workcode,h.sex,h.managerid,h.loginid from hrmresource h\n" +
" left join cus_fielddata c on h.id = c.id\n" +
" where c.scopeid = 3 and c.scope = 'HrmCustomFieldByInfoType' and c."+fieldid+" = ?",level);
while (rs.next()) {
poList.add(
PersonTablePO.builder()
.id(Util.getIntValue(rs.getString("id")))
.lastname(Util.null2String(rs.getString("lastname")))
.workcode(Util.null2String(rs.getString("workcode")))
.sex(Util.getIntValue(rs.getString("sex")))
.managerid(Util.getIntValue(rs.getString("managerid")))
.loginid(Util.null2String(rs.getString("loginid")))
.build()
);
}
return poList;
}
private List<PersonTablePO> selectByDeptId(String id) {
RecordSet rs = new RecordSet();
List<PersonTablePO> poList = new ArrayList<>();
rs.executeQuery("select id,lastname,workcode,sex,managerid,loginid from hrmresource where status < 4 and departmentid = ?",id);
while (rs.next()) {
poList.add(
PersonTablePO.builder()
.id(Util.getIntValue(rs.getString("id")))
.lastname(Util.null2String(rs.getString("lastname")))
.workcode(Util.null2String(rs.getString("workcode")))
.sex(Util.getIntValue(rs.getString("sex")))
.managerid(Util.getIntValue(rs.getString("managerid")))
.loginid(Util.null2String(rs.getString("loginid")))
.build()
);
}
return poList;
}
/**
*
* @return
*/
private TreeDataVO getBaseTreeData() {
return null; return null;
} }
/**
*
* @return
*/
private TreeDataVO getAllTreeData() {
//1.股东及委员会层级指定
ChartChildrensVO committee = ChartChildrensVO.builder().id("C-1")
.pid("S-1")
.label("Committee")
.childrens(getSiteHead())
.build();
List<ChartChildrensVO> committeeList = Collections.singletonList(committee);
return TreeDataVO.builder().id("S-1")
.label("Shareholder")
.childrens(committeeList)
.build();
}
@SneakyThrows
private List<ChartChildrensVO> getSiteHead() {
List<Integer> idList = selectCusSiteHead();
List<ChartChildrensVO> siteHeadList = new ArrayList<>();
DepartmentComInfo dInfo = new DepartmentComInfo();
ResourceComInfo rInfo = new ResourceComInfo();
idList.forEach(item -> {
String departmentId = rInfo.getDepartmentID(String.valueOf(item));
ChartChildrensVO build = ChartChildrensVO.builder()
.id(departmentId)
.pid("C-1")
.label(dInfo.getDepartmentmark(departmentId))
.build();
boolean manager = hrmCommonService.isManager(item);
if (manager) {
build.setChildrens(recursionDepartment(item));
}
siteHeadList.add(build);
});
return siteHeadList;
}
/**
*
* @param id
* @return
*/
@SneakyThrows
private List<ChartChildrensVO> recursionDepartment(Integer id) {
List<ChartChildrensVO> vos = new ArrayList<>();
DepartmentComInfo dInfo = new DepartmentComInfo();
ResourceComInfo rInfo = new ResourceComInfo();
String underling = hrmCommonService.getUnderling(id);
//获取直接下属
List<String> underList = Arrays.stream(underling.split(","))
.filter(s -> !s.isEmpty())
.collect(Collectors.toList());
underList.forEach(item -> {
String departmentId = rInfo.getDepartmentID(String.valueOf(item));
ChartChildrensVO build = ChartChildrensVO.builder()
.id(departmentId)
.pid(item)
.label(dInfo.getDepartmentmark(departmentId))
.build();
boolean manager = hrmCommonService.isManager(Integer.valueOf(item));
if (manager) {
build.setChildrens(recursionDepartment(Integer.valueOf(item)));
}
vos.add(build);
});
return vos;
}
} }

@ -1,11 +1,9 @@
package com.engine.sship.util; package com.engine.sship.util;
/** /**
* @Author weaver_cl * @author apple
* @Description: */
* @Date 2023/2/21
* @Version V1.0
**/
public class ExceptionUtil { public class ExceptionUtil {
public static String getRealMessage(Throwable e) { public static String getRealMessage(Throwable e) {
while (e != null) { while (e != null) {

@ -140,7 +140,7 @@ public class ResponseResult<T, R> {
*/ */
private String Ok() { private String Ok() {
Map<String, Object> apidatas = new HashMap<>(); Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", true); apidatas.put("api_status", true);
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
} }
@ -150,7 +150,7 @@ public class ResponseResult<T, R> {
*/ */
private String Ok(R r) { private String Ok(R r) {
Map<String, Object> apidatas = new HashMap<>(); Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", true); apidatas.put("api_status", true);
apidatas.put("data", r); apidatas.put("data", r);
String success = getJsonString(apidatas); String success = getJsonString(apidatas);
if (isLog) { if (isLog) {
@ -165,8 +165,8 @@ public class ResponseResult<T, R> {
*/ */
private static String Error(String message) { private static String Error(String message) {
Map<String, Object> apidatas = new HashMap<>(); Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", false); apidatas.put("api_status", false);
apidatas.put("errormsg", message); apidatas.put("msg", message);
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
} }
@ -176,8 +176,8 @@ public class ResponseResult<T, R> {
*/ */
private static String Error(String message, Exception e) { private static String Error(String message, Exception e) {
Map<String, Object> apidatas = new HashMap<>(); Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", false); apidatas.put("api_status", false);
apidatas.put("errormsg", message); apidatas.put("msg", message);
apidatas.put("error", e.getMessage()); apidatas.put("error", e.getMessage());
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
} }

@ -1,7 +1,9 @@
package com.engine.sship.web; package com.engine.sship.web;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.sship.entity.ChartChildrensVO; import com.engine.sship.entity.PersonTableParam;
import com.engine.sship.entity.PersonTableVO;
import com.engine.sship.entity.TreeDataVO;
import com.engine.sship.service.OrgChartService; import com.engine.sship.service.OrgChartService;
import com.engine.sship.service.impl.OrgChartServiceImpl; import com.engine.sship.service.impl.OrgChartServiceImpl;
import com.engine.sship.util.ResponseResult; import com.engine.sship.util.ResponseResult;
@ -13,8 +15,10 @@ import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.Produces; import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context; import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import java.util.List;
/** /**
@ -31,11 +35,20 @@ public class OrgChartController {
@GET @GET
@Path("/resource") @Path("/resource-tree")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public String selectResourceChart(@Context HttpServletRequest request, @Context HttpServletResponse response) { public String selectResourceChart(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<String, ChartChildrensVO>(user).run(getOrgChartService(user) :: selectResourceChart); return new ResponseResult<String, TreeDataVO>(user).run(getOrgChartService(user) :: selectResourceChart);
}
@GET
@Path("/person")
@Produces(MediaType.APPLICATION_JSON)
public String selectPerson(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam("id") String id) {
User user = HrmUserVarify.getUser(request, response);
PersonTableParam build = PersonTableParam.builder().id(id).build();
return new ResponseResult<PersonTableParam, List<PersonTableVO>>(user).run(getOrgChartService(user) :: selectPerson,build);
} }

Loading…
Cancel
Save