package com.jiayue.biz.service.impl; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jiayue.biz.domain.*; import com.jiayue.biz.dto.ProjectDto; import com.jiayue.biz.mapper.ProjectMapper; import com.jiayue.biz.service.ProjectInfoService; import com.jiayue.biz.service.ProjectService; import com.jiayue.biz.service.WindTowerInfoService; import com.jiayue.biz.util.CalculationUtil; import com.jiayue.common.utils.DateUtil; import lombok.AllArgsConstructor; import org.bson.json.JsonObject; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; /** * 项目Service业务层处理 * * @author L.ym * @date 2022-12-22 */ @AllArgsConstructor @Service public class ProjectServiceImpl extends ServiceImpl implements ProjectService { private final ProjectInfoService projectInfoService; private final WindTowerInfoService windTowerInfoService; private final MongoTemplate mongoTemplate; /* * 根据项目名称模糊查询 */ @Override public Page getByProjectName(Integer current, Integer size, String projectName) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.like(projectName != null, "project_name", projectName); Page page = new Page(current, size); return page(page, wrapper); } //查询组装项目列表 public List getProject(Project project) { List projectInfoList = projectInfoService.getProjectInfoList(); ArrayList projectList = new ArrayList<>(); for (ProjectInfo projectInfo : projectInfoList) { StringBuilder builder = new StringBuilder(); ProjectDto projectDto = new ProjectDto(); projectDto.setId(projectInfo.getId()); if (projectInfo.getProjectBasicInfo() != null) { projectDto.setProjectSort(projectInfo.getProjectBasicInfo().getProjectSort()); projectDto.setProjectState(projectInfo.getProjectBasicInfo().getProjectState()); projectDto.setProjectType(projectInfo.getProjectBasicInfo().getProjectType()); projectDto.setProjectName(projectInfo.getProjectBasicInfo().getProjectName()); projectDto.setProjectOverview(projectInfo.getProjectBasicInfo().getProjectOverview()); projectDto.setResourcesOverview(projectInfo.getProjectBasicInfo().getResourcesOverview()); projectDto.setProjectNameEasy(projectInfo.getProjectBasicInfo().getProjectNameEasy()); if (projectInfo.getProjectBasicInfo().getPosition() != null && !projectInfo.getProjectBasicInfo().getPosition().equals("")) { String[] split = projectInfo.getProjectBasicInfo().getPosition().split(","); projectDto.setLongitude(split[0]); projectDto.setLatitude(split[1]); } } if (projectInfo.getEquipment() != null) { List collect = projectInfo.getEquipment().stream().map(Equipment::getName).collect(Collectors.toList()); if (projectInfo.getEquipment() != null && !projectInfo.getEquipment().equals("")) { for (String s : collect) { builder.append(s).append(","); } if (builder.length() > 0) { builder.delete(builder.length() - 1, builder.length()); } projectDto.setEquipment(builder.toString()); } } StringBuilder stringBuilder = new StringBuilder(); List> coordinates = projectInfo.getCoordinates(); if (coordinates != null && coordinates.size() > 0) { for (List coordinate : coordinates) { for (Coordinates coordinates1 : coordinate) { stringBuilder.append(coordinates1.getLongitude()).append(",").append(coordinates1.getLatitude()).append(";"); } stringBuilder.delete(stringBuilder.length() - 1, stringBuilder.length()); stringBuilder.append("。"); } } projectDto.setCoordinates(stringBuilder.toString()); projectList.add(projectDto); } if (project.getProjectName() != null) { return projectList.stream().filter(p -> p.getProjectName().contains(project.getProjectName())).collect(Collectors.toList()); } return projectList; } public void delProject(String id) { projectInfoService.delProjectInfo(id); } //新增 public void saveProject(ProjectDto projectDto) { List windTowerInfoList = windTowerInfoService.list(); ProjectInfo projectInfo = new ProjectInfo(); projectInfo.setId(UUID.randomUUID().toString()); ProjectBasicInfo projectBasicInfo = projectInfo.getProjectBasicInfo(); if (projectBasicInfo == null) { projectBasicInfo = new ProjectBasicInfo(); this.getProjectBasicInfo(projectBasicInfo, projectDto); } projectInfo.setProjectBasicInfo(projectBasicInfo); if (projectDto.getEquipment() != null && !projectDto.getEquipment().equals("")) { List equipment = CalculationUtil.getEquipment(windTowerInfoList, projectDto.getEquipment()); projectInfo.setEquipment(equipment); } else { projectInfo.setEquipment(new ArrayList<>()); } ArrayList> cooList = new ArrayList<>(); if (projectDto.getCoordinates() != null) { if (projectDto.getCoordinates().contains("。")) { String[] split = projectDto.getCoordinates().split("。"); for (String s : split) { List coordinatesList = this.getCoordinates(s); cooList.add(coordinatesList); } } else { List coordinatesList1 = this.getCoordinates(projectDto.getCoordinates()); cooList.add(coordinatesList1); } } else { projectInfo.setCoordinates(new ArrayList<>()); } mongoTemplate.save(projectInfo); } //修改 public void updateProject(ProjectDto projectDto) { List windTowerInfoList = windTowerInfoService.list(); ProjectInfo projectInfo = projectInfoService.getOneProjectInfoById(projectDto.getId()); ProjectBasicInfo projectBasicInfo = projectInfo.getProjectBasicInfo(); //组装基本信息 this.getProjectBasicInfo(projectBasicInfo, projectDto); if (projectDto.getEquipment() != null && !projectDto.getEquipment().equals("")) { List equipment = CalculationUtil.getEquipment(windTowerInfoList, projectDto.getEquipment()); projectInfo.setEquipment(equipment); } ArrayList> cooList = new ArrayList<>(); if (projectDto.getCoordinates().contains("。")) { String[] split = projectDto.getCoordinates().split("。"); for (String s : split) { List coordinatesList = this.getCoordinates(s); cooList.add(coordinatesList); } } else { List coordinatesList1 = this.getCoordinates(projectDto.getCoordinates()); cooList.add(coordinatesList1); } mongoTemplate.save(projectInfo); } public List getCoordinates(String coordinates) { ArrayList coordinatesList = new ArrayList<>(); Coordinates coordinates1 = new Coordinates(); if (coordinates.length() > 0) { String[] split = coordinates.split(";"); coordinates1.setLongitude(split[0]); coordinates1.setLatitude(split[1]); coordinatesList.add(coordinates1); } return coordinatesList; } public void getProjectBasicInfo(ProjectBasicInfo projectBasicInfo, ProjectDto projectDto) { projectBasicInfo.setProjectName(projectDto.getProjectName()); projectBasicInfo.setProjectSort(projectDto.getProjectSort()); projectBasicInfo.setProjectState(projectDto.getProjectState()); projectBasicInfo.setProjectType(projectDto.getProjectType()); projectBasicInfo.setProjectNameEasy(projectDto.getProjectNameEasy()); if (projectDto.getLongitude() != null && projectDto.getLatitude() != null) { projectBasicInfo.setPosition(projectDto.getLongitude() + "," + projectDto.getLatitude()); } else { projectBasicInfo.setPosition(""); } projectBasicInfo.setProjectOverview(projectDto.getProjectOverview()); projectBasicInfo.setResourcesOverview(projectBasicInfo.getResourcesOverview()); } }