RelationObjectStrategy.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.persagy.proxy.adm.strategy.relationdata;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.Set;
  6. import com.fasterxml.jackson.databind.ObjectMapper;
  7. import com.fasterxml.jackson.databind.node.ObjectNode;
  8. import com.persagy.dmp.basic.dto.RequestData;
  9. import com.persagy.dmp.common.helper.SpringHelper;
  10. import com.persagy.dmp.digital.entity.ObjectDigital;
  11. import com.persagy.proxy.adm.model.AdmRelationObject;
  12. /**
  13. *
  14. * @version 1.0.0
  15. * @company persagy
  16. * @author zhangqiankun
  17. * @date 2021年9月2日 下午10:46:03
  18. */
  19. public interface RelationObjectStrategy {
  20. String WHERE_IN = "$in";
  21. String OBJ_TYPE = "objType";
  22. ObjectMapper OBJECT_MAPPER = SpringHelper.getBean(ObjectMapper.class);
  23. static Map<String, String> OBJNAME_2_TYPE = new HashMap<String,String>(){
  24. private static final long serialVersionUID = 1L;
  25. {
  26. put("对象ID", "id");
  27. put("对象名称", "name");
  28. put("对象本地编码", "local_id");
  29. put("对象本地名称", "local_name");
  30. put("设计图纸中编码", "cad_id");
  31. }
  32. };
  33. /**
  34. * 统计关系总数
  35. *
  36. * @param groupCode
  37. * @param projectId
  38. * @return
  39. */
  40. long countRelationObjects(String groupCode, String projectId);
  41. /**
  42. * 查询出所有的关系信息
  43. *
  44. * @param groupCode 集团编码
  45. * @param projectId 项目ID
  46. * @return 不会返回null
  47. */
  48. List<AdmRelationObject> exportRelationObject(String groupCode, String projectId);
  49. /**
  50. * 查询出所有的关系对象数据
  51. *
  52. * @param groupCode 集团编码
  53. * @param projectId 项目ID
  54. * @param mainContent 主对象的筛选关键字,筛选范围为id,name,local_id,local_name,cADID.为关系左侧对象
  55. * @param slaveContent 从对象的筛选关键字.objTo对应的对象,筛选范围为id,name,local_id,local_name.为关系右侧对象
  56. * @return 不会返回null
  57. */
  58. List<ObjectDigital> queryAllRelations(String groupCode, String projectId, String mainContent, Set<String> slaveContent);
  59. /**
  60. * 分页查询关系对象数据
  61. *
  62. * @param masterObjs 查询的数据集存储地方
  63. * @param requestData 请求参数
  64. * @param groupCode 集团编码
  65. * @param projectId 项目ID
  66. */
  67. void queryPageRelations(List<ObjectDigital> masterObjs, RequestData requestData, String groupCode, String projectId);
  68. /**
  69. * 保存之前校验数据的合法性
  70. *
  71. * @param relationObject 需要校验的对象
  72. * @param groupCode
  73. * @param projectId
  74. * @param code 参考 OBJNAME_2_TYPE
  75. * @return String - 校验失败的原因, ObjectNode -- BDTP接口的参数,不会返回null,请用instanceOf 判断返回值
  76. */
  77. Object beforeSaveRelationObject(AdmRelationObject relationObject, String groupCode, String projectId, String code);
  78. /**
  79. * 保存对象之间的关系
  80. *
  81. * @param relationObject
  82. * @param groupCode
  83. * @param projectId
  84. * @return
  85. */
  86. boolean saveRelationObject(ObjectNode relationObject, String groupCode, String projectId);
  87. /**
  88. * 批量保存对象之间的关系
  89. *
  90. * @param relationObjects
  91. * @param groupCode
  92. * @param projectId
  93. * @return
  94. */
  95. boolean saveRelationObjects(List<ObjectNode> relationObjects, String groupCode, String projectId);
  96. }