AdmSystemServiceImpl.java 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package com.persagy.proxy.object.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.persagy.proxy.adm.request.AdmQueryCriteria;
  4. import com.persagy.proxy.adm.request.AdmResponse;
  5. import com.persagy.proxy.adm.service.impl.AbstractAdmBaseServiceImpl;
  6. import com.persagy.proxy.common.entity.InstanceUrlParam;
  7. import com.persagy.proxy.dictionary.model.AdmDict;
  8. import com.persagy.proxy.dictionary.model.AdmObjectType;
  9. import com.persagy.proxy.dictionary.service.IAdmDictService;
  10. import com.persagy.proxy.object.model.AdmEquipment;
  11. import com.persagy.proxy.object.model.AdmSystem;
  12. import com.persagy.proxy.object.model.AdmSystemCategory;
  13. import com.persagy.proxy.object.service.IAdmEquipmentService;
  14. import com.persagy.proxy.object.service.IAdmSystemService;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.Map;
  20. /**
  21. * ADM 系统 实现类
  22. * @author lvxy
  23. * @date 2021/8/18
  24. */
  25. @Service
  26. public class AdmSystemServiceImpl extends AbstractAdmBaseServiceImpl<AdmSystem> implements IAdmSystemService {
  27. @Autowired
  28. private IAdmDictService dictService;
  29. @Autowired
  30. private IAdmEquipmentService equipmentService;
  31. @Override
  32. public AdmResponse doQuery(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmSystem> clazz) {
  33. AdmResponse response = super.doQuery(context, request, clazz);
  34. // 系统需要补充分类名称属性
  35. ensureSpecialValues(context, (List<AdmSystem>) response.getContent());
  36. return response;
  37. }
  38. @Override
  39. public void ensureSpecialValues(InstanceUrlParam context, List<AdmSystem> vos) {
  40. if(CollUtil.isEmpty(vos)) {
  41. return;
  42. }
  43. // 查询对象类型 - 只找到这个接口,应提供一个按编码查编码名称Map的接口
  44. AdmDict admDict = AdmDict.builder().type(AdmSystem.OBJ_TYPE).build();
  45. AdmResponse dicRs = dictService.queryCategory(context, admDict, AdmObjectType.class);
  46. List<AdmObjectType> dicList = (List<AdmObjectType>) dicRs.getContent();
  47. if(CollUtil.isEmpty(dicList)) {
  48. return;
  49. }
  50. // 转换为编码名称Map
  51. Map<String, String> codeNameMap = CollUtil.fieldValueAsMap(dicList, "code", "name");
  52. Map<String, AdmObjectType> codeNameMaps = CollUtil.fieldValueMap(dicList, "code");
  53. // 给系统赋值 - 同时收集设备对象,扩展设备对象赋值
  54. List<AdmEquipment> equipmentList = new ArrayList<>();
  55. for(AdmSystem vo:vos) {
  56. vo.setCategoryName(codeNameMap.get(vo.getClassCode()));
  57. if(codeNameMaps.get(vo.getClassCode()) != null){
  58. AdmSystemCategory admSystemCategory = new AdmSystemCategory();
  59. admSystemCategory.setCategoryName(codeNameMaps.get(vo.getClassCode()).getName());
  60. admSystemCategory.setCode(codeNameMaps.get(vo.getClassCode()).getCode());
  61. admSystemCategory.setProjectI(codeNameMaps.get(vo.getClassCode()).getProjectId());
  62. vo.setCategoryNames(admSystemCategory);
  63. }
  64. // 收集设备对象
  65. if(CollUtil.isEmpty(vo.getEquipmentList())) {
  66. continue;
  67. }
  68. equipmentList.addAll(vo.getEquipmentList());
  69. }
  70. // 对象扩展属性赋值
  71. equipmentService.ensureSpecialValues(context, equipmentList);
  72. }
  73. }