package com.sercurityControl.proteam.dutyTask.controller; import com.alibaba.fastjson2.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.securityControl.common.core.utils.StringUtils; import com.securityControl.common.core.web.domain.AjaxResult; import com.securityControl.common.log.annotation.Log; import com.securityControl.common.log.enums.BusinessType; import com.securityControl.common.log.enums.OperationType; import com.sercurityControl.proteam.dutyTask.domain.BidTowerVo; import com.sercurityControl.proteam.dutyTask.domain.TowerVo; import com.sercurityControl.proteam.dutyTask.service.BidTowerMainService; import com.sercurityControl.proteam.util.BaseController; import com.sercurityControl.proteam.util.CoordinateConversion; import com.sercurityControl.proteam.util.ImportExcelHelper; import com.sercurityControl.proteam.util.ResultModel; import lombok.extern.slf4j.Slf4j; import org.apache.poi.util.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author cw chen * @description 标段杆塔维护实体类 * @date 2023-08-04 10:37 */ @RestController @RequestMapping("/pot/bidTowerMain/") @Slf4j public class BidTowerMainController extends BaseController { Logger logger = LoggerFactory.getLogger(BidTowerMainController.class); @Resource(name = "BidTowerMainService") private BidTowerMainService service; /** * @return com.securityControl.common.core.web.domain.AjaxResult * @author cw chen * @description 验证某字段是否重复 * @Param vo * @date 2023-08-04 16:34 */ @PostMapping("isRepeat") public AjaxResult isRepeat(BidTowerVo vo) { try { int result = service.isRepeat(vo); if (result > 0) { return AjaxResult.success("杆塔编号/名称已存在", false); } return AjaxResult.success("验证通过", true); } catch (Exception e) { logger.error("验证某字段是否重复", e); return AjaxResult.error("服务异常,请稍后重试"); } } /** * @return com.securityControl.common.core.web.domain.AjaxResult * @author cw chen * @description 根据id获取标段杆塔信息 * @Param vo * @date 2023-08-04 16:38 */ @PostMapping("getBidTowerInfoById") public AjaxResult getBidTowerInfoById(BidTowerVo vo) { BidTowerVo bidTowerVo = null; try { bidTowerVo = service.getBidTowerInfoById(vo); return AjaxResult.success("获取成功", bidTowerVo); } catch (Exception e) { logger.error("根据id获取标段杆塔信息", e); return AjaxResult.error("获取失败", bidTowerVo); } } /** * @return com.securityControl.common.core.web.domain.AjaxResult * @author cw chen * @description 新增/修改标段杆塔信息 * @Param vo * @date 2023-08-04 16:43 */ @PostMapping("addBidTowerInfo") public AjaxResult addBidTowerInfo(BidTowerVo vo) { try { if (StringUtils.isBlank(vo.getId())) { vo = coordinarrteArr(vo); } service.addOrUpdateBidTowerInfo(vo); return AjaxResult.success(); } catch (Exception e) { logger.error("新增/修改标段杆塔信息", e); return AjaxResult.error(); } } /** * @return com.securityControl.common.core.web.domain.AjaxResult * @author cw chen * @description 获取标段工程杆塔经纬度 * @Param vo * @date 2023-08-07 10:01 */ @PostMapping("getBidTowerList") public AjaxResult getBidTowerList(BidTowerVo vo) { List list = null; try { list = service.getBidTowerList(vo); } catch (Exception e) { logger.error("获取标段工程杆塔经纬度", e); } return AjaxResult.success("查询成功", list); } /** * @param vo * @return Map * @description 单项工程杆塔维护列表 * @author cwchen * @date 2024/1/16 10:11 */ @PostMapping(value = "getSingleTowerMainList") @Log(title = "单项工程杆塔维护列表", menu = "单项工程杆塔维护列表", businessType = BusinessType.QUERY, details = "单项工程杆塔维护列表") public Map getSingleTowerMainList(BidTowerVo vo) { PageHelper.startPage(Integer.parseInt(vo.getPage()), Integer.parseInt(vo.getLimit())); Map map = new HashMap(6); List deviceList = service.getSingleTowerMainList(vo); PageInfo pageInfo = new PageInfo(deviceList); map.put("code", 200); map.put("msg", "操作成功"); map.put("count", pageInfo.getTotal()); map.put("curr", vo.getPage()); map.put("limit", vo.getLimit()); map.put("data", pageInfo.getList()); return map; } /** * @param vo * @return Map * @description 工程杆塔信息 * @author cwchen * @date 2024/1/16 13:34 */ @PostMapping(value = "getTowerListById") @Log(title = "工程杆塔信息", menu = "工程杆塔信息", businessType = BusinessType.QUERY, details = "工程杆塔信息") public Map getTowerListById(BidTowerVo vo) { PageHelper.startPage(Integer.parseInt(vo.getPage()), Integer.parseInt(vo.getLimit())); Map map = new HashMap(6); List deviceList = service.getTowerListById(vo); PageInfo pageInfo = new PageInfo(deviceList); map.put("code", 200); map.put("msg", "操作成功"); map.put("count", pageInfo.getTotal()); map.put("curr", vo.getPage()); map.put("limit", vo.getLimit()); map.put("data", pageInfo.getList()); return map; } /** * @param request * @param response * @description 杆塔维护模版-下载 * @author cwchen * @date 2024/1/16 14:18 */ @GetMapping("downLoadExcelModel2") public void downLoadExcelModel2(HttpServletRequest request, HttpServletResponse response) { InputStream inputStream = null; ServletOutputStream servletOutputStream = null; try { String path = "download/" + "tower_model.xlsx"; inputStream = this.getClass().getClassLoader().getResourceAsStream(path); response.setContentType("application/vnd.ms-excel"); response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.addHeader("charset", "utf-8"); response.addHeader("Pragma", "no-cache"); String encodeName = URLEncoder.encode("gt_model.xlsx", StandardCharsets.UTF_8.toString()); response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"; filename*=utf-8''" + encodeName); servletOutputStream = response.getOutputStream(); IOUtils.copy(inputStream, servletOutputStream); response.flushBuffer(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (servletOutputStream != null) { servletOutputStream.close(); } if (inputStream != null) { inputStream.close(); } } catch (Exception e) { e.printStackTrace(); } } } /** * @param vo * @return AjaxResult * @description 删除杆塔信息 * @author cwchen * @date 2024/1/16 14:27 */ @PostMapping("delTowerData") public AjaxResult delTowerData(BidTowerVo vo) { return service.delTowerData(vo); } /** * @param file * @param request * @param response * @description 杆塔信息掉入 * @author cwchen * @date 2024/1/16 15:03 */ @PostMapping("/importExcel2") @Log(title = "杆塔信息导入", menu = "杆塔信息导入", businessType = BusinessType.IMPORT, details = "杆塔信息导入", grade = OperationType.IMPORT_BUSINESS) public void importExcel2(MultipartFile file, HttpServletRequest request, HttpServletResponse response) { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); MultipartHttpServletRequest multiReq = multipartResolver.resolveMultipart(request); // 单项编码 String proNo = multiReq.getParameter("proNo"); try { List lstObj = (List) ImportExcelHelper.readExcel(file, TowerVo.class); List list = new ArrayList<>(); List lstError = new ArrayList<>(); if (lstObj != null && lstObj.size() > 0) { list = new ArrayList<>(); lstError = new ArrayList<>(); for (JSONObject obj : lstObj) { if (StringUtils.isBlank(obj.getString("towerName"))) { JSONObject error = new JSONObject(); error.put("errorRow", obj.getString("rowNo")); error.put("errorLine", "杆塔编号/名称"); error.put("errorData", ""); error.put("errorMsg", "杆塔编号/名称不能为空"); lstError.add(error); continue; } if (StringUtils.isBlank(obj.getString("lon"))) { JSONObject error = new JSONObject(); error.put("errorRow", obj.getString("rowNo")); error.put("errorLine", "经度"); error.put("errorData", ""); error.put("errorMsg", "经度不能为空"); lstError.add(error); continue; } if (StringUtils.isBlank(obj.getString("lat"))) { JSONObject error = new JSONObject(); error.put("errorRow", obj.getString("rowNo")); error.put("errorLine", "纬度"); error.put("errorData", ""); error.put("errorMsg", "纬度不能为空"); lstError.add(error); continue; } TowerVo vo = new TowerVo(); vo.setTowerName(obj.getString("towerName")); try { String lon = null, lat = null; String[] lons = obj.getString("lon").split("\\."); String[] lats = obj.getString("lat").split("\\."); if (lons[1].length() > 8) { lon = String.format("%.8f", Double.parseDouble(obj.getString("lon"))); } else { lon = obj.getString("lon"); } if (lats[1].length() > 8) { lat = String.format("%.8f", Double.parseDouble(obj.getString("lat"))); } else { lat = obj.getString("lat"); } try { String[] coordinarrteArr = CoordinateConversion.wgs84togcj02(Double.parseDouble(lon), Double.parseDouble(lat)); vo.setLon(coordinarrteArr[0]); vo.setLat(coordinarrteArr[1]); } catch (Exception e) { vo.setLon(null); vo.setLat(null); } } catch (Exception e) { vo.setLon(obj.getString("lon")); vo.setLat(obj.getString("lat")); } list.add(vo); } } ResultModel resultModel = new ResultModel(); if (lstError != null && lstError.size() > 0) { resultModel.setSuccess(false); resultModel.setStatus(200); resultModel.setMsg("导入成功"); resultModel.setData(lstError); } else if (lstError.size() == 0) { service.addTowerInfo(list, proNo); resultModel.setSuccess(true); resultModel.setStatus(200); resultModel.setMsg("导入成功"); resultModel.setData(null); } sendJson(response, resultModel); } catch (Exception ex) { ex.printStackTrace(); resultModel = new ResultModel(); resultModel.setSuccess(false); resultModel.setStatus(1000); resultModel.setMsg("服务异常"); try { sendJson(response, resultModel); } catch (IOException e) { e.printStackTrace(); } } } /** * @param vo * @return String[] * @description 获取经纬度 * @author cwchen * @date 2024/1/16 17:35 */ public BidTowerVo coordinarrteArr(BidTowerVo vo) { String lon = null, lat = null; String[] lons = vo.getLon().split("\\."); String[] lats = vo.getLat().split("\\."); if (lons[1].length() > 8) { lon = String.format("%.8f", Double.parseDouble(vo.getLon())); } else { lon = vo.getLon(); } if (lats[1].length() > 8) { lat = String.format("%.8f", Double.parseDouble(vo.getLat())); } else { lat = vo.getLat(); } try { String[] coordinarrteArr = CoordinateConversion.wgs84togcj02(Double.parseDouble(lon), Double.parseDouble(lat)); vo.setLon(coordinarrteArr[1]); vo.setLat(coordinarrteArr[0]); } catch (Exception e) { vo.setLon(null); vo.setLat(null); } return vo; } /** * 获取单项工程 * * @param vo * @return AjaxResult * @description * @author cwchen * @date 2024/4/22 14:24 */ @PostMapping(value = "getSingleProList") public AjaxResult getSingleProList(BidTowerVo vo) { return service.getSingleProList(vo); } /** * 根据单项工程获取杆塔 * @param vo * @return AjaxResult * @description * @author cwchen * @date 2024/4/22 14:57 */ @PostMapping(value = "getSignProTowerById") public AjaxResult getSignProTowerById(BidTowerVo vo) { return service.getSignProTowerById(vo); } }