ProjectServiceImpl.java 10 KB

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