IntelligentRecognition/ah-jjsp-service/.svn/pristine/cc/cc522087887b2a3ac3ab1cf2dd4...

404 lines
15 KiB
Plaintext
Raw Normal View History

2024-05-24 16:09:40 +08:00
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);
}
}