ProjectServiceImpl.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. package com.jiayue.biz.service.impl;
  2. import cn.hutool.json.JSONObject;
  3. import cn.hutool.json.JSONUtil;
  4. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.jiayue.biz.domain.*;
  9. import com.jiayue.biz.dto.ProjectDto;
  10. import com.jiayue.biz.mapper.ProjectMapper;
  11. import com.jiayue.biz.service.ProjectInfoService;
  12. import com.jiayue.biz.service.ProjectService;
  13. import com.jiayue.biz.service.WindTowerInfoService;
  14. import com.jiayue.biz.util.CalculationUtil;
  15. import com.jiayue.common.utils.DateUtil;
  16. import lombok.AllArgsConstructor;
  17. import org.bson.json.JsonObject;
  18. import org.springframework.data.mongodb.core.MongoTemplate;
  19. import org.springframework.stereotype.Service;
  20. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. import java.util.UUID;
  24. import java.util.stream.Collectors;
  25. /**
  26. * 项目Service业务层处理
  27. *
  28. * @author L.ym
  29. * @date 2022-12-22
  30. */
  31. @AllArgsConstructor
  32. @Service
  33. public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements ProjectService {
  34. private final ProjectInfoService projectInfoService;
  35. private final WindTowerInfoService windTowerInfoService;
  36. private final MongoTemplate mongoTemplate;
  37. /*
  38. * 根据项目名称模糊查询
  39. */
  40. @Override
  41. public Page getByProjectName(Integer current, Integer size, String projectName) {
  42. QueryWrapper<Project> wrapper = new QueryWrapper<>();
  43. wrapper.like(projectName != null, "project_name", projectName);
  44. Page page = new Page(current, size);
  45. return page(page, wrapper);
  46. }
  47. //查询组装项目列表
  48. public List<ProjectDto> getProject(Project project) {
  49. List<ProjectInfo> projectInfoList = projectInfoService.getProjectInfoList();
  50. ArrayList<ProjectDto> projectList = new ArrayList<>();
  51. for (ProjectInfo projectInfo : projectInfoList) {
  52. StringBuilder builder = new StringBuilder();
  53. ProjectDto projectDto = new ProjectDto();
  54. projectDto.setId(projectInfo.getId());
  55. if (projectInfo.getProjectBasicInfo() != null) {
  56. projectDto.setProjectSort(projectInfo.getProjectBasicInfo().getProjectSort());
  57. projectDto.setProjectState(projectInfo.getProjectBasicInfo().getProjectState());
  58. projectDto.setProjectType(projectInfo.getProjectBasicInfo().getProjectType());
  59. projectDto.setProjectName(projectInfo.getProjectBasicInfo().getProjectName());
  60. projectDto.setProjectOverview(projectInfo.getProjectBasicInfo().getProjectOverview());
  61. projectDto.setResourcesOverview(projectInfo.getProjectBasicInfo().getResourcesOverview());
  62. projectDto.setProjectNameEasy(projectInfo.getProjectBasicInfo().getProjectNameEasy());
  63. if (projectInfo.getProjectBasicInfo().getPosition() != null && !projectInfo.getProjectBasicInfo().getPosition().equals("")) {
  64. String[] split = projectInfo.getProjectBasicInfo().getPosition().split(",");
  65. projectDto.setLongitude(split[0]);
  66. projectDto.setLatitude(split[1]);
  67. }
  68. }
  69. if (projectInfo.getEquipment() != null) {
  70. List<String> collect = projectInfo.getEquipment().stream().map(Equipment::getName).collect(Collectors.toList());
  71. if (projectInfo.getEquipment() != null && !projectInfo.getEquipment().equals("")) {
  72. for (String s : collect) {
  73. builder.append(s).append(",");
  74. }
  75. if (builder.length() > 0) {
  76. builder.delete(builder.length() - 1, builder.length());
  77. }
  78. projectDto.setEquipment(builder.toString());
  79. }
  80. }
  81. StringBuilder stringBuilder = new StringBuilder();
  82. List<List<Coordinates>> coordinates = projectInfo.getCoordinates();
  83. if (coordinates != null && coordinates.size() > 0) {
  84. for (List<Coordinates> coordinate : coordinates) {
  85. for (Coordinates coordinates1 : coordinate) {
  86. stringBuilder.append(coordinates1.getLongitude()).append(",").append(coordinates1.getLatitude()).append(";");
  87. }
  88. stringBuilder.delete(stringBuilder.length() - 1, stringBuilder.length());
  89. stringBuilder.append("。");
  90. }
  91. }
  92. projectDto.setCoordinates(stringBuilder.toString());
  93. projectList.add(projectDto);
  94. }
  95. if (project.getProjectName() != null) {
  96. return projectList.stream().filter(p -> p.getProjectName().contains(project.getProjectName())).collect(Collectors.toList());
  97. }
  98. return projectList;
  99. }
  100. public void delProject(String id) {
  101. projectInfoService.delProjectInfo(id);
  102. }
  103. //新增
  104. public void saveProject(ProjectDto projectDto) {
  105. List<WindTowerInfo> windTowerInfoList = windTowerInfoService.list();
  106. ProjectInfo projectInfo = new ProjectInfo();
  107. projectInfo.setId(UUID.randomUUID().toString());
  108. ProjectBasicInfo projectBasicInfo = projectInfo.getProjectBasicInfo();
  109. if (projectBasicInfo == null) {
  110. projectBasicInfo = new ProjectBasicInfo();
  111. this.getProjectBasicInfo(projectBasicInfo, projectDto);
  112. }
  113. projectInfo.setProjectBasicInfo(projectBasicInfo);
  114. if (projectDto.getEquipment() != null && !projectDto.getEquipment().equals("")) {
  115. List<Equipment> equipment = CalculationUtil.getEquipment(windTowerInfoList, projectDto.getEquipment());
  116. projectInfo.setEquipment(equipment);
  117. } else {
  118. projectInfo.setEquipment(new ArrayList<>());
  119. }
  120. ArrayList<List<Coordinates>> cooList = new ArrayList<>();
  121. if (projectDto.getCoordinates() != null) {
  122. if (projectDto.getCoordinates().contains("。")) {
  123. String[] split = projectDto.getCoordinates().split("。");
  124. for (String s : split) {
  125. List<Coordinates> coordinatesList = this.getCoordinates(s);
  126. cooList.add(coordinatesList);
  127. }
  128. } else {
  129. List<Coordinates> coordinatesList1 = this.getCoordinates(projectDto.getCoordinates());
  130. cooList.add(coordinatesList1);
  131. }
  132. } else {
  133. projectInfo.setCoordinates(new ArrayList<>());
  134. }
  135. mongoTemplate.save(projectInfo);
  136. }
  137. //修改
  138. public void updateProject(ProjectDto projectDto) {
  139. List<WindTowerInfo> windTowerInfoList = windTowerInfoService.list();
  140. ProjectInfo projectInfo = projectInfoService.getOneProjectInfoById(projectDto.getId());
  141. ProjectBasicInfo projectBasicInfo = projectInfo.getProjectBasicInfo();
  142. //组装基本信息
  143. this.getProjectBasicInfo(projectBasicInfo, projectDto);
  144. if (projectDto.getEquipment() != null && !projectDto.getEquipment().equals("")) {
  145. List<Equipment> equipment = CalculationUtil.getEquipment(windTowerInfoList, projectDto.getEquipment());
  146. projectInfo.setEquipment(equipment);
  147. }
  148. ArrayList<List<Coordinates>> cooList = new ArrayList<>();
  149. if (projectDto.getCoordinates().contains("。")) {
  150. String[] split = projectDto.getCoordinates().split("。");
  151. for (String s : split) {
  152. List<Coordinates> coordinatesList = this.getCoordinates(s);
  153. cooList.add(coordinatesList);
  154. }
  155. } else {
  156. List<Coordinates> coordinatesList1 = this.getCoordinates(projectDto.getCoordinates());
  157. cooList.add(coordinatesList1);
  158. }
  159. mongoTemplate.save(projectInfo);
  160. }
  161. public List<Coordinates> getCoordinates(String coordinates) {
  162. ArrayList<Coordinates> coordinatesList = new ArrayList<>();
  163. Coordinates coordinates1 = new Coordinates();
  164. if (coordinates.length() > 0) {
  165. String[] split = coordinates.split(";");
  166. coordinates1.setLongitude(split[0]);
  167. coordinates1.setLatitude(split[1]);
  168. coordinatesList.add(coordinates1);
  169. }
  170. return coordinatesList;
  171. }
  172. public void getProjectBasicInfo(ProjectBasicInfo projectBasicInfo, ProjectDto projectDto) {
  173. projectBasicInfo.setProjectName(projectDto.getProjectName());
  174. projectBasicInfo.setProjectSort(projectDto.getProjectSort());
  175. projectBasicInfo.setProjectState(projectDto.getProjectState());
  176. projectBasicInfo.setProjectType(projectDto.getProjectType());
  177. projectBasicInfo.setProjectNameEasy(projectDto.getProjectNameEasy());
  178. if (projectDto.getLongitude() != null && projectDto.getLatitude() != null) {
  179. projectBasicInfo.setPosition(projectDto.getLongitude() + "," + projectDto.getLatitude());
  180. } else {
  181. projectBasicInfo.setPosition("");
  182. }
  183. projectBasicInfo.setProjectOverview(projectDto.getProjectOverview());
  184. projectBasicInfo.setResourcesOverview(projectBasicInfo.getResourcesOverview());
  185. }
  186. }