LogisticsService.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.project.zcustom.tools;
  2. import com.alibaba.fastjson2.JSON;
  3. import com.alibaba.fastjson2.JSONArray;
  4. import com.alibaba.fastjson2.JSONObject;
  5. import com.project.common.utils.StringUtils;
  6. import com.project.common.utils.http.HttpUtils;
  7. import com.project.zcustom.domain.addional.LargeAssetDirs;
  8. import com.project.zcustom.domain.addional.LargeLogistics;
  9. import com.project.zcustom.domain.basics.PlatAppOrg;
  10. import com.project.zcustom.domain.plat.PlatApiRecord;
  11. import com.project.zcustom.mapper.logistics.PlatAssetMapper;
  12. import com.project.zcustom.service.basics.IPlatAppOrgService;
  13. import com.project.zcustom.service.plat.IPlatApiRecordService;
  14. import org.apache.commons.compress.utils.Lists;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import javax.annotation.Resource;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. import java.util.Map;
  21. import java.util.Objects;
  22. import java.util.stream.Collectors;
  23. /**
  24. * @Description 后勤资源监控服务
  25. * @Author bqyang
  26. * @Date 2025/2/10 17:23
  27. * @Version 1.0
  28. */
  29. @Service
  30. public class LogisticsService {
  31. @Autowired
  32. private PlatAssetMapper platAssetMapper;
  33. @Autowired
  34. private IPlatAppOrgService platAppOrgService;
  35. @Resource
  36. IPlatApiRecordService iPlatApiRecordService;
  37. public void getLogisticsData(){
  38. JSONObject jsonObject = this.repeat(ApiUrlConfig.getLogisticsUrl());
  39. if (Objects.isNull(jsonObject)) {
  40. return;
  41. }
  42. // 添加接口请求记录
  43. PlatApiRecord platApiRecord = new PlatApiRecord();
  44. platApiRecord.setApiUrl(ApiUrlConfig.getLogisticsUrl());
  45. platApiRecord.setApiResult(jsonObject.toString());
  46. iPlatApiRecordService.save(platApiRecord);
  47. JSONArray dataArray = jsonObject.getJSONArray("data");
  48. List<LargeLogistics> list = new ArrayList<>();
  49. List<LargeAssetDirs> officeAssetList = new ArrayList<>();
  50. List<LargeAssetDirs> buildingAssetList = new ArrayList<>();
  51. List<LargeAssetDirs> serviceAssetList = new ArrayList<>();
  52. // 查询所有组织信息
  53. List<PlatAppOrg> orgList = platAppOrgService.selectAppCodeList();
  54. Map<String, String> orgMap = orgList.stream().collect(Collectors.toMap(PlatAppOrg::getAppCode, PlatAppOrg::getAppName, (v1, v2) -> v1));
  55. for (int i = 0; i < dataArray.size(); i++) {
  56. JSONObject dataItem = dataArray.getJSONObject(i);
  57. LargeLogistics largeLogistics = JSON.parseObject(dataItem.toString(), LargeLogistics.class);
  58. // 业务方提供的数据包含一些不需要的部门数据进行过滤
  59. if ( !orgMap.containsKey(largeLogistics.getOrgId())){
  60. continue;
  61. }
  62. // 资产列表数据提取
  63. List<LargeAssetDirs> officeList = getAssetList(dataItem, largeLogistics.getOrgId(), "officeAssetDistrs");
  64. officeAssetList.addAll(officeList);
  65. List<LargeAssetDirs> buildingList = getAssetList(dataItem, largeLogistics.getOrgId(),"buildingAssetDistrs");
  66. buildingAssetList.addAll(buildingList);
  67. List<LargeAssetDirs> serviceList = getAssetList(dataItem, largeLogistics.getOrgId(), "serviceAssetDistrs");
  68. serviceAssetList.addAll(serviceList);
  69. list.add(largeLogistics);
  70. }
  71. platAssetMapper.deleteLogistics();
  72. platAssetMapper.insertLargePlatLogistics(list);
  73. platAssetMapper.deleteOfficeAssetDirs();
  74. platAssetMapper.insertOfficeAssetDirs(officeAssetList);
  75. platAssetMapper.deleteBuildingAssetDirs();
  76. platAssetMapper.insertBuildingAssetDirs(buildingAssetList);
  77. platAssetMapper.deleteServiceAssetDirs();
  78. platAssetMapper.insertServiceAssetDirs(serviceAssetList);
  79. }
  80. /**
  81. * officeAssetDistrs 办公资产分布列表
  82. * buildingAssetDistrs 楼宇设备分布列表
  83. * serviceAssetDistrs 服务设备分布列表
  84. * @param dataItem
  85. * @param appCode
  86. * @param jsonKey
  87. * @return
  88. */
  89. private List<LargeAssetDirs> getAssetList(JSONObject dataItem, String appCode, String jsonKey){
  90. List<LargeAssetDirs> list = Lists.newArrayList();
  91. JSONArray buildingAssetArray = dataItem.getJSONArray(jsonKey);
  92. for (int k = 0; k < buildingAssetArray.size(); k++) {
  93. LargeAssetDirs largeAssetDirs = new LargeAssetDirs();
  94. JSONObject assetItem = buildingAssetArray.getJSONObject(k);
  95. largeAssetDirs.setAppCode(appCode);
  96. largeAssetDirs.setCategoryName(assetItem.getString("categoryName"));
  97. largeAssetDirs.setAssetNum(assetItem.getLong("assetNum"));
  98. list.add(largeAssetDirs);
  99. }
  100. return list;
  101. }
  102. public JSONObject repeat(String url){
  103. try {
  104. String res = HttpUtils.sendPost(url,"");
  105. if (StringUtils.isNotBlank(res)){
  106. JSONObject jsonObject = JSONObject.parseObject(res);
  107. return jsonObject;
  108. }
  109. }catch (Exception e){
  110. e.printStackTrace();
  111. }
  112. return null;
  113. }
  114. }