package com.javaweb.geo.service.impl; import java.io.File; import java.util.List; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import com.javaweb.common.config.Global; import com.javaweb.common.utils.DateUtils; import com.javaweb.common.utils.IdGenerate; import com.javaweb.geo.domain.*; import com.javaweb.geo.mapper.*; import com.javaweb.geo.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javaweb.common.core.text.Convert; import org.springframework.util.ObjectUtils; import org.springframework.web.multipart.MultipartFile; /** * 钻孔Service业务层处理 * * @author zmk * @date 2022-10-20 */ @Service public class HoleServiceImpl implements IHoleService { @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; @Autowired private IProjectService projectService; private String fileSaveDir = Global.getProfile() + "\\template\\" ; /** * 查询钻孔 * * @param ids 钻孔ID * @return 钻孔 */ @Override public Hole selectHoleById(String ids) { return holeMapper.selectHoleById(ids); } /** * 查询钻孔列表 * * @param hole 钻孔 * @return 钻孔 */ @Override public List selectHoleList(Hole hole) { return holeMapper.selectHoleList(hole); } /** * 新增钻孔 * * @param hole 钻孔 * @return 结果 */ @Override public int insertHole(Hole hole) { if(ObjectUtils.isEmpty(hole.getIds())){ hole.setIds(IdGenerate.nextId()); } hole.setCreateTime(DateUtils.getNowDate()); return holeMapper.insertHole(hole); } /** * 修改钻孔 * * @param hole 钻孔 * @return 结果 */ @Override public int updateHole(Hole hole) { hole.setUpdateTime(DateUtils.getNowDate()); return holeMapper.updateHole(hole); } /** * 删除钻孔对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteHoleByIds(String ids) { // 批量删除钻孔下面的关联数据 // String[] strings = Convert.toStrArray(ids); // if (!ObjectUtils.isEmpty(strings)) { // for (String holeId : strings) { // // // =======标贯========== // List biaoguans = holeBiaoguanMapper.selectHoleBiaoguanByHoleId(holeId); // String[] biaoguanIds = biaoguans.stream().map(HoleBiaoguan::getIds).toArray(String[]::new); // // // =======回次========== // List holeHuicis = holeHuiciMapper.selectHoleHuiciByHoleId(holeId); // String[] huiCiIds = holeHuicis.stream().map(HoleHuici::getIds).toArray(String[]::new); // // // =======人员========== // List persons = holePersonMapper.selectHolePersonByHoleId(holeId); // String[] personIds = persons.stream().map(HolePerson::getIds).toArray(String[]::new); // // // =======取土========== // List qutus = holeQutuMapper.selectHoleQutuByHoleId(holeId); // String[] qutuIds = qutus.stream().map(HoleQutu::getIds).toArray(String[]::new); // // // =======水位========== // List shuiweis = holeShuiweiMapper.selectHoleShuiWeiByHoleId(holeId); // String[] shuiweiIds = shuiweis.stream().map(HoleShuiwei::getIds).toArray(String[]::new); // // // =======岩土========== // List yantus = holeYantuMapper.selectHoleYantuListByHoleId(holeId); // String[] yantusIds = yantus.stream().map(HoleYantu::getIds).toArray(String[]::new); // // holeBiaoguanMapper.deleteHoleBiaoguanByIds(biaoguanIds); // holeHuiciMapper.deleteHoleHuiciByIds(huiCiIds); // holePersonMapper.deleteHolePersonByIds(personIds); // holeQutuMapper.deleteHoleQutuByIds(qutuIds); // holeShuiweiMapper.deleteHoleShuiweiByIds(shuiweiIds); // holeYantuMapper.deleteHoleYantuByIds(yantusIds); // } // } return holeMapper.deleteHoleByIds(Convert.toStrArray(ids)); } /** * 删除钻孔信息 * * @param ids 钻孔ID * @return 结果 */ @Override public int deleteHoleById(String ids) { return holeMapper.deleteHoleById(ids); } /** * 导入钻孔 */ @Override public String importHole(String projectId, MultipartFile file, boolean updateSupport) { try { String dest = saveExcel(file); List list = readData(dest); if(!ObjectUtils.isEmpty(list)){ for (Hole item : list) { item.setProjectId(projectId); insertHole(item); } } } catch (Exception e) { return e.toString(); } return "导入完毕" ; } /** * 总进度 * @return */ @Override public Hole selectHoleTotalProcess() { return holeMapper.selectHoleTotalProcess(); } /** * 场地进度 * @return */ @Override public List selectHoleProjectProcess() { return holeMapper.selectHoleProjectProcess(); } private String saveExcel(MultipartFile file) { String filename = file.getOriginalFilename(); File dir = new File(fileSaveDir); if (!dir.exists()) { dir.mkdir(); } String addr = fileSaveDir + filename; try { File dest = new File(addr); file.transferTo(dest); } catch (Exception e) { return null; } return addr; } private List readData(String filepath) { ExcelReader reader = ExcelUtil.getReader(filepath, 0); reader.addHeaderAlias("钻孔编号", "code"); reader.addHeaderAlias("钻孔类型", "type"); reader.addHeaderAlias("孔口高程(m)", "elevation"); reader.addHeaderAlias("设计孔深(m)", "depth"); reader.addHeaderAlias("钻孔状态", "status"); reader.addHeaderAlias("钻孔经度", "longitude"); reader.addHeaderAlias("钻孔纬度", "latitude"); reader.addHeaderAlias("总进尺(m)", "footage"); reader.addHeaderAlias("已完成进尺(m)", "footageCpl"); List list = reader.readAll(Hole.class); return list; } }