|
@@ -53,7 +53,6 @@ public class ObjectInfoServiceImpl implements IObjectInfoService {
|
|
|
|
|
|
private final ObjectInfoMapper dao;
|
|
|
private final DigitalMessageHelper messageSender;
|
|
|
- private final IObjectTypeService objectTypeService;
|
|
|
|
|
|
@Override
|
|
|
public ObjectInfoDefine load(String id) {
|
|
@@ -101,106 +100,6 @@ public class ObjectInfoServiceImpl implements IObjectInfoService {
|
|
|
public Page<ObjectInfoDefine> queryByCondition(Page<ObjectInfoDefine> page, Wrapper<ObjectInfoDefine> queryWrapper) {
|
|
|
return dao.selectPage(page, queryWrapper);
|
|
|
}
|
|
|
- /***
|
|
|
- * Description: 按条件查询
|
|
|
- * @param criteria : 查询条件
|
|
|
- * @return : com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.persagy.dmp.define.entity.ObjectInfoDefine>
|
|
|
- * @author : lijie
|
|
|
- * @date :2021/10/20 11:01
|
|
|
- * Update By lijie 2021/10/20 11:01
|
|
|
- */
|
|
|
- @Override
|
|
|
- public Page<ObjectInfoDefine> queryByCondition(QueryCriteria criteria) {
|
|
|
- List<ObjectTypeDefine> objectTypeDefines = queryClassCodes(criteria);
|
|
|
- // 1.如果传的参数不包含classCode走公共逻辑
|
|
|
- if (CollUtil.isEmpty(objectTypeDefines)){
|
|
|
- QueryWrapper<ObjectInfoDefine> wrapper = new QueryWrapper<>();
|
|
|
- // 添加所属项目条件
|
|
|
- ConditionUtil.ensureProjectCriteria(wrapper);
|
|
|
- // 转换查询条件
|
|
|
- QueryCriteriaHelper.toWrapper(wrapper, criteria, ObjectInfoDefine.class);
|
|
|
- Page<ObjectInfoDefine> page = QueryCriteriaHelper.toPage(criteria);
|
|
|
- // 没有排序条件时,按默认条件排序
|
|
|
- if(CollUtil.isEmpty(page.getOrders())) {
|
|
|
- wrapper.orderByAsc("show_order");
|
|
|
- }
|
|
|
- if(criteria.isOnlyCount()) {
|
|
|
- return page.setTotal(queryCount(wrapper));
|
|
|
- }
|
|
|
- /// 20210819 临时处理,优化执行计划,解决Mysql:Out of sort memory问题
|
|
|
- // wrapper.select("/*+ SET_VAR(sort_buffer_size = 2M) */*");
|
|
|
- return queryByCondition(QueryCriteriaHelper.toPage(criteria), wrapper);
|
|
|
- }
|
|
|
- // 2.包含classCode则不进行分页并且获取数据集合
|
|
|
- // 2.1 如果为基础类型、且为平台级,优先级100
|
|
|
- // 2.2 如果为基础类型、且为集团级,优先级200
|
|
|
- // 2.3 如果为基础类型、且为项目级,优先级300
|
|
|
- // 2.4 如果为非基础类型、且为平台级,优先级400
|
|
|
- // 2.5 如果为非基础类型、且为集团级,优先级500
|
|
|
- // 2.6 如果为非基础类型、且为项目级,优先级600
|
|
|
- criteria.getCriteria().remove(ObjectDigital.CLASS_CODE_HUM);
|
|
|
- List<ObjectInfoDefine> result = new ArrayList<>();
|
|
|
- for (ObjectTypeDefine objectTypeDefine : objectTypeDefines) {
|
|
|
- // 获取classCode集合
|
|
|
- Set<String> classCodes = CollUtil.newHashSet(objectTypeDefine.getCode());
|
|
|
- if (StrUtil.isNotBlank(objectTypeDefine.getParentCode())){
|
|
|
- classCodes.add(objectTypeDefine.getParentCode());
|
|
|
- }
|
|
|
- if (CollUtil.isEmpty(classCodes)){
|
|
|
- continue;
|
|
|
- }
|
|
|
- QueryWrapper<ObjectInfoDefine> wrapper = new QueryWrapper<>();
|
|
|
- // 添加所属项目条件
|
|
|
- ConditionUtil.ensureProjectCriteria(wrapper);
|
|
|
- // 转换查询条件
|
|
|
- QueryCriteriaHelper.toWrapper(wrapper, criteria, ObjectInfoDefine.class);
|
|
|
- wrapper.orderByAsc("show_order");
|
|
|
- wrapper.in(ObjectDigital.CLASS_CODE,classCodes);
|
|
|
- List<ObjectInfoDefine> objectInfoDefines = dao.queryByClassCodes(wrapper,classCodes);
|
|
|
- if (CollUtil.isEmpty(objectInfoDefines)){
|
|
|
- continue;
|
|
|
- }
|
|
|
- objectInfoDefines.forEach(objectInfoDefine -> objectInfoDefine.setClassCode(objectInfoDefine.getClassCode()));
|
|
|
- result.addAll(objectInfoDefines);
|
|
|
- }
|
|
|
- Page<ObjectInfoDefine> pageResult = new Page<>();
|
|
|
- pageResult.setRecords(result);
|
|
|
- pageResult.setSize(result.size());
|
|
|
- pageResult.setTotal(result.size());
|
|
|
- pageResult.setCurrent(1L);
|
|
|
- return pageResult;
|
|
|
- }
|
|
|
-
|
|
|
- /***
|
|
|
- * Description: 处理对象类型,如果父级id存在则加上父级id
|
|
|
- * @param criteria : 查询参数
|
|
|
- * @return : void
|
|
|
- * @author : lijie
|
|
|
- * @date :2021/9/9 18:25
|
|
|
- * Update By lijie 2021/9/9 18:25
|
|
|
- */
|
|
|
- private List<ObjectTypeDefine> queryClassCodes(QueryCriteria criteria) {
|
|
|
- ObjectNode objectNode = criteria.getCriteria();
|
|
|
- if (!objectNode.has(ObjectDigital.CLASS_CODE_HUM)){
|
|
|
- return null;
|
|
|
- }
|
|
|
- JsonNode jsonNode = objectNode.get(ObjectDigital.CLASS_CODE_HUM);
|
|
|
- QueryCriteria typeCriteria = new QueryCriteria();
|
|
|
- typeCriteria.setCriteria(SpringHelper.getBean(ObjectMapper.class).createObjectNode());
|
|
|
- typeCriteria.getCriteria().set("code",jsonNode);
|
|
|
- typeCriteria.getCriteria().put("valid",true);
|
|
|
- QueryWrapper<ObjectTypeDefine> wrapper = new QueryWrapper<>();
|
|
|
- // 添加所属项目条件
|
|
|
- ConditionUtil.ensureProjectCriteria(wrapper);
|
|
|
- // 转换查询条件
|
|
|
- QueryCriteriaHelper.toWrapper(wrapper, typeCriteria, ObjectTypeDefine.class);
|
|
|
- List<ObjectTypeDefine> objectTypeDefines = objectTypeService.queryByCondition(wrapper);
|
|
|
- if (CollUtil.isEmpty(objectTypeDefines)){
|
|
|
- return null;
|
|
|
- }
|
|
|
- return objectTypeDefines;
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
@Override
|
|
|
public List<ObjectInfoDefine> insert(List<ObjectInfoDefine> voList) {
|
|
@@ -311,4 +210,17 @@ public class ObjectInfoServiceImpl implements IObjectInfoService {
|
|
|
messageSender.sendMessage(DigitalMessageConstant.OPERATE_AFTER_DELETE, null, dbVO, false);
|
|
|
});
|
|
|
}
|
|
|
+ /***
|
|
|
+ * Description: 根据筛选条件和对象类型编码查询信息点数据
|
|
|
+ * @param wrapper : 筛选条件
|
|
|
+ * @param classCodes : 对象类型编码集合
|
|
|
+ * @return : java.util.List<com.persagy.dmp.define.entity.ObjectInfoDefine>
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/10/28 14:51
|
|
|
+ * Update By lijie 2021/10/28 14:51
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<ObjectInfoDefine> queryByClassCodes(QueryWrapper<ObjectInfoDefine> wrapper, Set<String> classCodes) {
|
|
|
+ return dao.queryByClassCodes(wrapper,classCodes);
|
|
|
+ }
|
|
|
}
|