package com.javaweb.geo.service.impl; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.stream.Collectors; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.javaweb.common.utils.DateUtils; import com.javaweb.framework.util.ShiroUtils; import com.javaweb.geo.domain.*; import com.javaweb.geo.mapper.*; import com.javaweb.geo.service.*; import com.javaweb.geo.vo.ExceptionProjectVo; import com.javaweb.geotdp.enums.RecordType; import com.javaweb.system.domain.SysRole; import com.javaweb.system.domain.SysUser; import com.javaweb.system.mapper.SysUserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javaweb.common.core.text.Convert; import org.springframework.util.ObjectUtils; /** * 项目Service业务层处理 * * @author zmk * @date 2022-10-14 */ @Service public class ProjectServiceImpl implements IProjectService { @Autowired private ProjectMapper projectMapper; @Autowired private HandleExceptionMapper handleExceptionMapper; @Autowired private SysUserMapper sysUserMapper; @Autowired private HoleMapper holeMapper; @Autowired private HoleBiaoguanMapper holeBiaoguanMapper; @Autowired private HoleHuiciMapper holeHuiciMapper; @Autowired private HolePersonMapper holePersonMapper; @Autowired private HoleQutuMapper holeQutuMapper; @Autowired private HoleShuiweiMapper holeShuiweiMapper; @Autowired private HoleYantuMapper holeYantuMapper; /** * 查询项目 * * @param ids 项目ID * @return 项目 */ @Override public Project selectProjectById(String ids) { return projectMapper.selectProjectById(ids); } /** * 查询项目列表 * * @param project 项目 * @return 项目 */ @Override public List selectProjectList(Project project) { //return projectMapper.selectProjectList(project); List resultList = new ArrayList<>(); SysUser sysUser = ShiroUtils.getSysUser(); List roles = sysUser.getRoles(); if (!ObjectUtils.isEmpty(roles)) { LinkedHashSet collect = roles.stream().map(SysRole::getRoleKey).collect(Collectors.toCollection(LinkedHashSet::new)); // 管理员角色 if (collect.contains(RecordType.role_admin.getId())) { resultList = projectMapper.selectProjectList(project); } // 普通角色 if (collect.contains(RecordType.role_gongsi.getId())) { SysUser u = sysUserMapper.selectUserById(sysUser.getUserId()); project.setCompanyId(u.getCompanyId()); resultList = projectMapper.selectProjectList(project); } } return resultList; } /** * 新增项目 * * @param project 项目 * @return 结果 */ @Override public int insertProject(Project project) { project.setCreateTime(DateUtils.getNowDate()); return projectMapper.insertProject(project); } /** * 修改项目 * * @param project 项目 * @return 结果 */ @Override public int updateProject(Project project) { return projectMapper.updateProject(project); } /** * 删除项目对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteProjectByIds(String ids) { return projectMapper.deleteProjectByIds(Convert.toStrArray(ids)); } /** * 删除项目信息 * * @param ids 项目ID * @return 结果 */ @Override public int deleteProjectById(String ids) { // 删除项目关联的钻孔数据 String[] strings = Convert.toStrArray(ids); if (!ObjectUtils.isEmpty(strings)) { for (String projectId : strings) { // =======钻孔========== List holes = holeMapper.selectHoleByProjectId(projectId); String[] holeIds = holes.stream().map(Hole::getIds).toArray(String[]::new); // =======标贯========== List biaoguans = holeBiaoguanMapper.selectHoleBiaoguanByProjectId(projectId); String[] biaoguanIds = biaoguans.stream().map(HoleBiaoguan::getIds).toArray(String[]::new); // =======回次========== List holeHuicis = holeHuiciMapper.selectHoleHuiciByProjectId(projectId); String[] huiCiIds = holeHuicis.stream().map(HoleHuici::getIds).toArray(String[]::new); // =======人员========== List persons = holePersonMapper.selectHolePersonByProjectId(projectId); String[] personIds = persons.stream().map(HolePerson::getIds).toArray(String[]::new); // =======取土========== List qutus = holeQutuMapper.selectHoleQutuByProjectId(projectId); String[] qutuIds = qutus.stream().map(HoleQutu::getIds).toArray(String[]::new); // =======水位========== List shuiweis = holeShuiweiMapper.selectHoleShuiWeiByProjectId(projectId); String[] shuiweiIds = shuiweis.stream().map(HoleShuiwei::getIds).toArray(String[]::new); // =======岩土========== List yantus = holeYantuMapper.selectHoleYantuByProjectId(projectId); String[] yantusIds = yantus.stream().map(HoleYantu::getIds).toArray(String[]::new); holeMapper.deleteHoleByIds(holeIds); holeBiaoguanMapper.deleteHoleBiaoguanByIds(biaoguanIds); holeHuiciMapper.deleteHoleHuiciByIds(huiCiIds); holePersonMapper.deleteHolePersonByIds(personIds); holeQutuMapper.deleteHoleQutuByIds(qutuIds); holeShuiweiMapper.deleteHoleShuiweiByIds(shuiweiIds); holeYantuMapper.deleteHoleYantuByIds(yantusIds); } } return projectMapper.deleteProjectById(ids); } /** * 查询异常项目列表 */ @Override public List proExceptionList() { List list = projectMapper.proExceptionList(); List resultList = new ArrayList<>(); ExceptionProjectVo item; if (ObjectUtil.isNotEmpty(list)) { for (Project project : list) { item = new ExceptionProjectVo(); BeanUtil.copyProperties(project, item); List exceptionList = handleExceptionMapper.selectListByProjectId(project.getIds()); String holeCodes = "", time = ""; if (ObjectUtil.isNotEmpty(exceptionList)) { holeCodes = exceptionList.stream().map(HandleException::getHoleCode).collect(Collectors.joining(",", "", "")); time = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, exceptionList.get(0).getMapTime()) + "~" + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, exceptionList.get(exceptionList.size() - 1).getMapTime()); } item.setExceptionNum(exceptionList.size()); item.setHoleCodes(holeCodes); item.setTime(time); resultList.add(item); } } return resultList; } }