404 lines
15 KiB
Plaintext
404 lines
15 KiB
Plaintext
|
|
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<BidTowerVo> list = null;
|
||
|
|
try {
|
||
|
|
list = service.getBidTowerList(vo);
|
||
|
|
} catch (Exception e) {
|
||
|
|
logger.error("获取标段工程杆塔经纬度", e);
|
||
|
|
}
|
||
|
|
return AjaxResult.success("查询成功", list);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param vo
|
||
|
|
* @return Map<Object>
|
||
|
|
* @description 单项工程杆塔维护列表
|
||
|
|
* @author cwchen
|
||
|
|
* @date 2024/1/16 10:11
|
||
|
|
*/
|
||
|
|
@PostMapping(value = "getSingleTowerMainList")
|
||
|
|
@Log(title = "单项工程杆塔维护列表", menu = "单项工程杆塔维护列表", businessType = BusinessType.QUERY, details = "单项工程杆塔维护列表")
|
||
|
|
public Map<String, Object> getSingleTowerMainList(BidTowerVo vo) {
|
||
|
|
PageHelper.startPage(Integer.parseInt(vo.getPage()), Integer.parseInt(vo.getLimit()));
|
||
|
|
Map<String, Object> map = new HashMap<String, Object>(6);
|
||
|
|
List<BidTowerVo> deviceList = service.getSingleTowerMainList(vo);
|
||
|
|
PageInfo<BidTowerVo> pageInfo = new PageInfo<BidTowerVo>(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<Object>
|
||
|
|
* @description 工程杆塔信息
|
||
|
|
* @author cwchen
|
||
|
|
* @date 2024/1/16 13:34
|
||
|
|
*/
|
||
|
|
@PostMapping(value = "getTowerListById")
|
||
|
|
@Log(title = "工程杆塔信息", menu = "工程杆塔信息", businessType = BusinessType.QUERY, details = "工程杆塔信息")
|
||
|
|
public Map<String, Object> getTowerListById(BidTowerVo vo) {
|
||
|
|
PageHelper.startPage(Integer.parseInt(vo.getPage()), Integer.parseInt(vo.getLimit()));
|
||
|
|
Map<String, Object> map = new HashMap<String, Object>(6);
|
||
|
|
List<BidTowerVo> deviceList = service.getTowerListById(vo);
|
||
|
|
PageInfo<BidTowerVo> pageInfo = new PageInfo<BidTowerVo>(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<JSONObject> lstObj = (List<JSONObject>) ImportExcelHelper.readExcel(file, TowerVo.class);
|
||
|
|
List<TowerVo> list = new ArrayList<>();
|
||
|
|
List<JSONObject> 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);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|