package com.sysu.admin.api.crop; import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; import com.sysu.admin.controller.crop.CropLand; import com.sysu.admin.controller.crop.CropLandService; import com.sysu.admin.controller.crop.images.CropImage; import com.sysu.admin.controller.crop.images.CropImageService; import com.sysu.admin.support.base.BaseComponent; import com.sysu.admin.support.shiro.ShiroService; import com.sysu.admin.support.system.config.ConfigContext; import com.sysu.admin.support.system.config.SConfigService; import com.sysu.admin.utils.TextUtil; 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.utils.CopyUtils; import org.opengis.referencing.FactoryException; import org.opengis.referencing.operation.TransformException; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @RequestMapping("/api/crop") @RestController public class CropController extends BaseComponent { @Autowired CropLandService cityLandService; @Autowired SConfigService mSConfigService; @Autowired ShiroService mShiroService; @Autowired ConfigContext configContext; @Autowired CropImageService cropImageService; @RequestMapping("/list") public BaseResult list(@RequestBody String data) throws FactoryException, TransformException { CropVo vo = JSON.parseObject(data, CropVo.class); List cityLandList = cityLandService.findByBuffer(vo.getPoint(),vo.getMeter()); cityLandList.stream().forEach(cityLand -> { cityLand.setGeojson(GeoCastUtil.gjson.toString(cityLand.getGeom())); }); return R.succ(cityLandList); } @RequestMapping("/updateStatus") public BaseResult updateStatus(@RequestBody String data){ CropVo vo = JSON.parseObject(data, CropVo.class); cityLandService.updateStatus(vo.getId(),vo.getStatus()); return R.succ(); } @PostMapping("/uploadData") public BaseResult uploadData(@RequestParam("fay") MultipartFile fay, @RequestParam("center") MultipartFile center, @RequestParam("near") MultipartFile near, String json){ CropVo vo = JSON.parseObject(json, CropVo.class); CropLand bean = cityLandService.findOne(vo.getId()); BeanUtils.copyProperties(vo, bean, CopyUtils.nullNames(vo)); CropImage fayImage = vo.getFay(); fayImage.setType(0); CropImage centerImage = vo.getCenter(); centerImage.setType(1); CropImage nearImage = vo.getNear(); nearImage.setType(2); fayImage.setFilename(saveFile(fay, "fay","test")); centerImage.setFilename(saveFile(center, "center","test")); nearImage.setFilename(saveFile(near, "near","test")); cityLandService.saveCropAndImages(bean, new CropImage[]{fayImage, centerImage, nearImage}); return R.succ(); } public String saveFile(MultipartFile file, String sign, String username){ if(file != null){ String imageDirPath = configContext.getImageDirPath(); String hz = TextUtil.rightSubstring(".",file.getOriginalFilename()); String newFileName = System.currentTimeMillis() + "_" + username+"_"+sign+"." + hz; try { //复制到零时文件 File target = new File(imageDirPath + newFileName); file.transferTo(target); } catch (IOException e) { e.printStackTrace(); } return newFileName; } return ""; } }