package com.kingdee.eas.custom.dataconfig.utils.service; import com.alibaba.fastjson.JSONArray; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.bsf.service.app.IHRMsfService; import com.kingdee.bos.metadata.entity.EntityObjectInfo; import com.kingdee.eas.common.EASBizException; import com.kingdee.eas.custom.dataconfig.utils.SqlUtils; import java.util.Map; /** * 获取选择字段的服务类 * 实现IHRMsfService接口,用于在金蝶EAS平台中处理获取指定实体选择字段的业务请求 */ public class GetSelectFieldService implements IHRMsfService { /** * 处理业务请求的核心方法 * 实现IHRMsfService接口的process方法,用于接收请求参数并返回处理结果 * @param context 系统上下文对象,包含用户信息、会话等上下文数据 * @param map 存放请求参数的Map集合,包含业务所需的输入参数 * @return 处理结果,返回JSONArray类型的选择字段信息 * @throws EASBizException 抛出EAS业务异常,用于处理业务逻辑错误 * @throws BOSException 抛出BOS平台异常,用于处理平台级错误 */ @Override public Object process(Context context, Map map) throws EASBizException, BOSException { // 从请求参数map中获取键为"entryFull1"的值,该值通常代表实体的完整标识(如实体全路径) Object o = map.get("entryFull1"); // 从请求参数map中获取键为"alias"的值,该值通常代表实体的别名(用于筛选字段) Object o1 = map.get("alias"); // 判断"entryFull1"对应的参数是否为空 if(o==null){ // 若"entryFull1"为空,则抛出运行时异常,提示"编号不能为空" throw new RuntimeException("编号不能为空"); } // 将"entryFull1"的参数值转换为字符串类型,便于后续使用 String entryFull1 = o.toString(); // 创建SqlUtils工具类的实例,用于调用其提供的工具方法 SqlUtils sqlUtils = new SqlUtils(); // 调用SqlUtils的getEntryInfo方法,根据实体完整标识和上下文获取实体对象信息(元数据) EntityObjectInfo entryInfo1 = sqlUtils.getEntryInfo(entryFull1, context); // 定义JSONArray类型的变量selectField,用于存储获取到的选择字段信息 JSONArray selectField = null; // 判断"alias"对应的参数是否为空 if (o1==null){ // 若"alias"为空,则调用SqlUtils的getSelectField方法,传入实体信息和上下文,获取无别名筛选的选择字段 selectField = sqlUtils.getSelectField(entryInfo1, null, context); }else { // 若"alias"不为空,则将其转换为字符串,调用SqlUtils的getSelectField方法,传入实体信息、别名和上下文,获取带别名筛选的选择字段 selectField = sqlUtils.getSelectField(entryInfo1,o1.toString(),context); } // 返回获取到的选择字段信息(JSONArray类型) return selectField; } }