| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- package com.kingdee.eas.custom.szpgm.osf.service;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.bsf.service.app.IHRMsfService;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import org.apache.commons.lang3.StringUtils;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 获取角色/角色成员信息接口(分管领导接口)
- * <p>
- * 根据修改日期、角色名称、角色编号等条件分页查询角色成员-角色关联信息,
- * 包含角色名称、编号、类型、状态以及人员关联关系等字段。
- * </p>
- *
- * <h3>入参说明</h3>
- * <pre>
- * modifyDate - 最后修改日期(yyyy-MM-dd),同时过滤角色-角色成员关联的最后修改时间
- * name - 成员名称(左模糊匹配)
- * code - 角色编号(精确匹配)
- * size - 每页条数(可选,默认100,最大1000)
- * page - 页码(可选,默认1)
- * </pre>
- *
- * <h3>返回值说明</h3>
- * <pre>
- * code - 状态码(200:成功, 500:异常)
- * msg - 提示信息
- * page - 当前页码
- * size - 每页条数
- * data - 角色负责人列表,每项包含:
- * id - 主键(人员-角色关联表主键)
- * roleid - 角色ID(关联 T_WFR_WFROLE.FID)
- * orgid - 组织ID
- * personid - 人员ID
- * isinclude - 是否包含下级
- * isdele - 是否委托
- * deleperson - 委托操作人
- * rolename - 角色名称
- * rolenumber - 角色编号
- * roledescribe- 角色描述
- * roletype - 角色类型
- * state - 角色状态
- * </pre>
- *
- * @author szpgm
- * @since 1.0.0
- */
- public class GetRoleSupervisorInfoOsfService implements IHRMsfService {
- /**
- * 处理角色-角色成员信息查询请求
- *
- * @param context 上下文对象
- * @param map 入参,支持以下 key:
- * <ul>
- * <li><b>modifyDate</b> - 最后修改日期(可选,yyyy-MM-dd)</li>
- * <li><b>name</b> - 角色名称(可选,左模糊匹配)</li>
- * <li><b>code</b> - 角色编号(可选,精确匹配)</li>
- * <li><b>page</b> - 页码(可选,默认1)</li>
- * <li><b>size</b> - 每页条数(可选,默认100,最大1000)</li>
- * </ul>
- * @return Map<String, Object>,包含 code、msg、page、size、data 字段
- * @throws EASBizException 业务异常
- * @throws BOSException 平台异常
- */
- @Override
- public Object process(Context context, Map map) throws EASBizException, BOSException {
- Map<String, Object> result = new HashMap<String, Object>();
- List<Map<String, Object>> list = new ArrayList<>();
- // ---------- 入参解析 ----------
- String modifyDate = (String) map.get("modifyDate");
- String name = (String) map.get("name");
- String code = (String) map.get("code");
- // 每页条数(默认100,上限1000)
- int maxSize = 1000;
- int size = 100;
- if (map.get("size") != null) {
- if (map.get("size") instanceof Integer) {
- size = (int) map.get("size");
- } else if (map.get("size") instanceof String) {
- size = Integer.parseInt((String) map.get("size"));
- }
- size = Math.min(maxSize, size);
- }
- // 页码(默认1)
- int page = 1;
- if (map.get("page") != null) {
- if (map.get("page") instanceof Integer) {
- page = (int) map.get("page");
- } else if (map.get("page") instanceof String) {
- page = Integer.parseInt((String) map.get("page"));
- }
- }
- // ---------- 查询数据 ----------
- try {
- result.put("msg", "成功");
- result.put("code", "200");
- result.put("page", page);
- result.put("size", size);
- result.put("data", list);
- // 构建基础SQL并动态追加过滤条件
- StringBuilder sql = getSql();
- List<Object> paramArr = new ArrayList<>();
- // 修改日期过滤:角色或角色成员-关联最后修改时间 >= 指定日期
- if (StringUtils.isNotBlank(modifyDate)) {
- sql.append(" and (role.flastupdatetime >= ? or prole.flastupdatetime >= ? ) ");
- paramArr.add(modifyDate);
- paramArr.add(modifyDate);
- }
- // 角色名称左模糊匹配
- if (StringUtils.isNotBlank(name)) {
- sql.append(" and role.frolename_l2 like ? ");
- paramArr.add(name + "%");
- }
- // 角色编号精确匹配
- if (StringUtils.isNotBlank(code)) {
- sql.append(" and role.fnumber = ? ");
- paramArr.add(code);
- }
- // 分页:LIMIT 条数 OFFSET 偏移量
- sql.append(" LIMIT ? OFFSET ? ");
- paramArr.add(size);
- paramArr.add(((page - 1) * size));
- IRowSet rs = DbUtil.executeQuery(context, sql.toString(), paramArr.toArray());
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- while (rs.next()) {
- Map<String, Object> params = new HashMap<String, Object>();
- // 主键(人员-角色关联表主键)
- params.put("id", rs.getString("id"));
- // 角色ID
- params.put("roleid", rs.getString("roleid"));
- // 组织ID
- params.put("orgid", rs.getString("orgid"));
- // 人员ID
- params.put("personid", rs.getString("personid"));
- // 是否包含
- params.put("isinclude", rs.getString("isinclude"));
- // 是否删除
- params.put("isdele", rs.getString("isdele"));
- // 删除操作人
- params.put("deleperson", rs.getString("deleperson"));
- // 角色名称
- params.put("rolename", rs.getString("rolename"));
- // 角色编号
- params.put("rolenumber", rs.getString("rolenumber"));
- // 角色描述
- params.put("roledescribe", rs.getString("roledescribe"));
- // 角色类型
- params.put("roletype", rs.getString("roletype"));
- // 角色状态
- params.put("state", rs.getString("state"));
- // 修改日期(格式化为 yyyy-MM-dd)
- //Date modifyDateVal = rs.getTimestamp("modifyDate");
- //params.put("modifyDate", modifyDateVal != null ? sdf.format(modifyDateVal) : "");
- list.add(params);
- }
- } catch (Exception e) {
- // 异常时返回错误信息
- e.printStackTrace();
- result.put("msg", e.getMessage());
- result.put("code", "500");
- }
- return result;
- }
- /**
- * 构建角色负责人信息查询SQL
- * <p>
- * 从 T_WFR_PERSONROLE(人员-角色关联表)左连 T_WFR_WFROLE(工作流角色表)
- * 查询角色与角色成员的关联信息,按修改日期、岗位名称、岗位编号过滤,支持分页。
- * </p>
- *
- * @return 含占位符的SQL,参数顺序: modifyDate(×2), name, code, limit, offset
- */
- private static StringBuilder getSql() {
- StringBuilder sql = new StringBuilder();
- sql.append(" /*dialect*/ select ");
- // 人员-角色关联主键
- sql.append(" prole.fid id, ");
- // 角色ID
- sql.append(" prole.froleid roleid, ");
- // 组织ID
- sql.append(" prole.forgid orgid, ");
- // 人员ID
- sql.append(" prole.fpsersonid personid, ");
- // 是否包含子组织
- sql.append(" prole.fisinclude isinclude, ");
- // 是否已删除
- sql.append(" prole.fisdele isdele, ");
- // 删除操作人ID
- sql.append(" prole.fdelepersonid deleperson, ");
- // 角色名称
- sql.append(" role.frolename_l2 rolename, ");
- // 角色编号
- sql.append(" role.fnumber rolenumber, ");
- // 角色描述
- sql.append(" role.froledescribe_l2 roledescribe, ");
- // 角色类型
- sql.append(" role.froletype roletype, ");
- // 角色状态
- sql.append(" role.fstate state ");
- sql.append(" from T_WFR_PERSONROLE prole ");
- sql.append(" LEFT JOIN T_WFR_WFROLE role on prole.FROLEID = role.FID ");
- sql.append(" where 1=1 ");
- return sql;
- }
- }
|