123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- package com.sysu.admin.site;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.fastjson.JSON;
- import com.sysu.admin.controller.city.CityRepository;
- import com.sysu.admin.controller.city.District;
- import com.sysu.admin.controller.city.DistrictRepository;
- import com.sysu.admin.controller.crop.CropLand;
- import com.sysu.admin.controller.crop.CropLandService;
- import com.sysu.admin.controller.crop.CropLandVo;
- import com.sysu.admin.controller.crop.CropPoint;
- import com.sysu.admin.controller.crop.range.LandRangeIndexService;
- import com.sysu.admin.controller.crop.xls.CropExcel;
- import com.sysu.admin.controller.crop.xls.CropExcelService;
- import com.sysu.admin.controller.crop.xls.CustomHandler;
- import com.sysu.admin.controller.crop.xls.PublishCropExcelListener;
- import com.sysu.admin.controller.geo.land.LandTaskStatus;
- import com.sysu.admin.support.base.ServiceContext;
- import com.sysu.admin.support.shiro.ShiroService;
- import com.sysu.admin.utils.shape.GeoCastUtil;
- import com.xiesx.fastboot.base.result.BaseResult;
- import com.xiesx.fastboot.base.result.R;
- import com.xiesx.fastboot.core.token.annotation.GoToken;
- import com.xiesx.fastboot.core.token.handle.CurrentToken;
- import com.xiesx.fastboot.utils.CopyUtils;
- import org.apache.catalina.util.URLEncoder;
- import org.apache.commons.lang3.StringUtils;
- import org.locationtech.jts.geom.MultiPolygon;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.servlet.http.HttpServletResponse;
- import javax.transaction.Transactional;
- import java.io.IOException;
- import java.nio.charset.Charset;
- import java.nio.file.Path;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- /**
- * 读取地图数据信息
- */
- @RequestMapping("/site/crop")
- @Controller
- public class SiteCropLandController extends ServiceContext {
- @Autowired
- CropLandService cityLandService;
- @Autowired
- ShiroService shiroService;
- @Autowired
- LandRangeIndexService mLandRangeIndexService;
- @Autowired
- DistrictRepository districtRepository;
- @Autowired
- CityRepository cityRepository;
- @Autowired
- CropExcelService cropExcelService;
- @RequestMapping("/getInfo")
- @ResponseBody
- public BaseResult getInfo(Double x, Double y){
- CropLand cityLand = cityLandService.findByPoint(new Double[]{x,y});
- if(cityLand == null){
- return R.fail();
- }
- cityLand.setWkt(GeoCastUtil.geomToWkt(cityLand.getGeom()));
- return R.succ(cityLand);
- }
- @RequestMapping("/getGeoJson")
- @ResponseBody
- public BaseResult getGeojson(@RequestBody CommonVo commonVo, @GoToken() CurrentToken currentToken){
- List<CropPoint> cropLandList = cityLandService.findCropLandNoGeomByTableNamesAndBBox(commonVo.getTableNames(),
- commonVo.getX1(),commonVo.getY1(),commonVo.getX2(),commonVo.getY2(), commonVo.getStatus());
- return R.succ(cropLandList);
- }
- @RequestMapping("/getBuffer")
- @ResponseBody
- public BaseResult getBuffer(Double x, Double y, Integer m){
- return R.succ(cityLandService.getBuffer(new Double[]{x, y}, m));
- }
- @RequestMapping("/save")
- @ResponseBody
- public BaseResult save(CropLandVo vo){
- CropLand bean = cityLandService.findOne(vo.getId());
- if(bean.getStatus().intValue() == LandTaskStatus.unpublished.ordinal()){
- bean.setCreator(shiroService.getPrincipalId());
- bean.setCreateDate(new Date());
- }
- BeanUtils.copyProperties(vo, bean, CopyUtils.nullNames(vo));
- bean.setWkt(GeoCastUtil.geomToWkt(bean.getGeom()));
- bean.setCenterPoint(cityLandService.getCenterPoint(bean.getGeom()));
- District district = districtRepository.findByPoint(bean.getCenterPoint());
- if(district != null){
- cityLandService.setCity(bean, district);
- }
- cityLandService.save(bean);
- return R.succ(bean);
- }
- @RequestMapping("/publish")
- @ResponseBody
- public BaseResult publish(@RequestBody CropLandVo vo, @GoToken() CurrentToken currentToken){
- CropLand bean = cityLandService.findOne(vo.getId());
- if(bean.getStatus().intValue() != LandTaskStatus.unpublished.ordinal()){
- return R.fail("不是未发布的地块!");
- }
- if(bean.getDistrict() == null || bean.getCenterPoint() == null){
- bean.setCenterPoint(cityLandService.getCenterPoint(bean.getGeom()));
- bean.getCenterPoint().setSRID(4326);
- District district = districtRepository.findByPoint(bean.getCenterPoint());
- if(district != null){
- cityLandService.setCity(bean, district);
- }
- }
- bean.setStatus(LandTaskStatus.published.ordinal());
- cityLandService.save(bean);
- return R.succ();
- }
- @RequestMapping("/publish_index")
- public String publishIndex(){
- return "page/publish_task";
- }
- @RequestMapping("/batchPublish")
- @ResponseBody
- @Transactional
- public BaseResult batchPublish(CropLandVo vo, String fileBase64){
- if(StringUtils.isNotBlank(fileBase64)){
- Path path = cityLandService.fileByBase64(fileBase64,"xls",mShiroService.getPrincipalId());
- PublishCropExcelListener publishCropExcelListener = new PublishCropExcelListener(mLandRangeIndexService);
- EasyExcel.read(path.toFile(), CropExcel.class,publishCropExcelListener).doReadAllSync();
- Map<String,List<Long>> stringListMap = publishCropExcelListener.getTableIdsMap();
- for(String tableName : stringListMap.keySet()) {
- cityLandService.batchPublishByIds(tableName, stringListMap.get(tableName));
- }
- }else{
- if(vo.getDistrictId() != null) {
- String tableName = mLandRangeIndexService.getTableNameByCode(vo.getDistrictId());
- cityLandService.batchPublishByTableName(tableName);
- }
- }
- return R.succ();
- }
- @RequestMapping("/export_index")
- public String exportIndex(){
- return "page/export";
- }
- @RequestMapping("/export")
- @ResponseBody
- @Transactional
- public void export(CropLandVo vo, HttpServletResponse response){
- String tableNames;
- if(vo.getDistrictId() == null){
- tableNames = mLandRangeIndexService.getAllTableNames();
- }else{
- tableNames = mLandRangeIndexService.getTableNameByCode(vo.getDistrictId());
- }
- List<CropLand> cropLandList = cityLandService.findAllByStatusAndDistrict(tableNames, vo.getStatus());
- List<CropExcel> cropExcelList = cropExcelService.cropLandToCropExcel(cropLandList);
- String mimetype = "application/x-msdownload";
- String downFileName = "重庆耕地信息.xlsx";
- String inlineType = "attachment"; // 是否内联附件
- response.setContentType(mimetype);
- response.setHeader("Content-Disposition", inlineType
- + ";filename=" + URLEncoder.DEFAULT.encode(downFileName, Charset.defaultCharset()));
- try {
- EasyExcel.write(response.getOutputStream(), CropExcel.class).registerWriteHandler(new CustomHandler())
- .sheet("sheet1").doWrite(cropExcelList);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @RequestMapping("/addTest")
- @ResponseBody
- public BaseResult addTest(@RequestBody String data){
- String wkt = JSON.parseObject(data).get("wkt").toString();
- CropLand bean = new CropLand().setGeom((MultiPolygon)GeoCastUtil.wktToGeom(wkt))
- .setGridcode(2L).setStatus(LandTaskStatus.unpublished.ordinal());
- bean.setCenterPoint(cityLandService.getCenterPoint(bean.getGeom()));
- bean.getCenterPoint().setSRID(4326);
- District district = districtRepository.findByPoint(bean.getCenterPoint());
- if(district != null) {
- cityLandService.setCity(bean, district);
- }
- cityLandService.save(bean);
- return R.succ();
- }
- }
|