package com.persagy.proxy.adm.strategy.relationdata; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.persagy.dmp.basic.dto.RequestData; import com.persagy.dmp.common.helper.SpringHelper; import com.persagy.dmp.digital.entity.ObjectDigital; import com.persagy.proxy.adm.model.AdmRelationObject; /** * * @version 1.0.0 * @company persagy * @author zhangqiankun * @date 2021年9月2日 下午10:46:03 */ public interface RelationObjectStrategy { String WHERE_IN = "$in"; String OBJ_TYPE = "objType"; ObjectMapper OBJECT_MAPPER = SpringHelper.getBean(ObjectMapper.class); static Map OBJNAME_2_TYPE = new HashMap(){ private static final long serialVersionUID = 1L; { put("对象ID", "id"); put("对象名称", "name"); put("对象本地编码", "local_id"); put("对象本地名称", "local_name"); put("设计图纸中编码", "cad_id"); } }; /** * 统计关系总数 * * @param groupCode * @param projectId * @return */ long countRelationObjects(String groupCode, String projectId); /** * 查询出所有的关系信息 * * @param groupCode 集团编码 * @param projectId 项目ID * @return 不会返回null */ List exportRelationObject(String groupCode, String projectId); /** * 查询出所有的关系对象数据 * * @param groupCode 集团编码 * @param projectId 项目ID * @param mainContent 主对象的筛选关键字,筛选范围为id,name,local_id,local_name,cADID.为关系左侧对象 * @param slaveContent 从对象的筛选关键字.objTo对应的对象,筛选范围为id,name,local_id,local_name.为关系右侧对象 * @return 不会返回null */ List queryAllRelations(String groupCode, String projectId, String mainContent, Set slaveContent); /** * 分页查询关系对象数据 * * @param masterObjs 查询的数据集存储地方 * @param requestData 请求参数 * @param groupCode 集团编码 * @param projectId 项目ID */ void queryPageRelations(List masterObjs, RequestData requestData, String groupCode, String projectId); /** * 保存之前校验数据的合法性 * * @param relationObject 需要校验的对象 * @param groupCode * @param projectId * @param code 参考 OBJNAME_2_TYPE * @return String - 校验失败的原因, ObjectNode -- BDTP接口的参数,不会返回null,请用instanceOf 判断返回值 */ Object beforeSaveRelationObject(AdmRelationObject relationObject, String groupCode, String projectId, String code); /** * 保存对象之间的关系 * * @param relationObject * @param groupCode * @param projectId * @return */ boolean saveRelationObject(ObjectNode relationObject, String groupCode, String projectId); /** * 批量保存对象之间的关系 * * @param relationObjects * @param groupCode * @param projectId * @return */ boolean saveRelationObjects(List relationObjects, String groupCode, String projectId); }