| | |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springblade.modules.farm.entity.Farm; |
| | | import org.springblade.modules.farm.vo.FarmVO; |
| | | import org.springblade.modules.resource.endpoint.OssEndpoint; |
| | | import org.springblade.modules.system.entity.DictBiz; |
| | | import org.springblade.modules.system.service.IDictBizService; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | |
| | | private final ILandService landService; |
| | | private final IDictBizService dictService; |
| | | private final OssEndpoint ossEndpoint; |
| | | |
| | | /** |
| | | * 详情 |
| | |
| | | IPage<LandVO> pages = landService.selectLandPage(Condition.getPage(query), land); |
| | | return R.data(pages); |
| | | } |
| | | /** |
| | | * 根据品种id查询对应地块(农产品库存) |
| | | */ |
| | | @GetMapping("/selcetByStrainId") |
| | | public R selcetByStrainId(String strainId,String farmId) { |
| | | List<Land> list = landService.selectByStrainId(strainId,farmId); |
| | | return R.data(list); |
| | | } |
| | | |
| | | /** |
| | | * 根据品种id查询对应地块(种养品种) |
| | | */ |
| | | @GetMapping("/getByStrainIdFarmId") |
| | | public R getByStrainIdFarmId(LandVO land) { |
| | | List<Land> list = landService.getByStrainIdFarmId(land); |
| | | return R.data(list); |
| | | } |
| | | |
| | | /** |
| | | * 新增 地块表 |
| | |
| | | //替换分号为逗号 |
| | | String replaceAll = sNull.replaceAll(";", ","); |
| | | land.setLandRange("'POLYGON((" + replaceAll + "))'"); |
| | | } |
| | | List<Point2D.Double> points = new ArrayList<Point2D.Double>(); |
| | | double v1; |
| | | String landRange = range; |
| | | String[] s1 = landRange.split(";"); |
| | | for (String ss : s1) { |
| | | String[] temp = ss.split(","); |
| | | Point2D.Double point = new Point2D.Double(Double.parseDouble(temp[0]), |
| | | Double.parseDouble(temp[1])); |
| | | points.add(point); |
| | | } |
| | | PolyginArea tp = new PolyginArea(); |
| | | double area = tp.getAreaByxy(points); |
| | | Integer landUnit = land.getLandUnit(); |
| | | //(0: 亩 1:分 2:平方米 |
| | | if (landUnit == 0) { |
| | | double v = area * 0.0015; |
| | | v1 = (double) Math.round(v * 100) / 100; |
| | | } else if (landUnit == 1) { |
| | | double v = area * 0.015; |
| | | v1 = (double) Math.round(v * 100) / 100; |
| | | |
| | | List<Point2D.Double> points = new ArrayList<Point2D.Double>(); |
| | | double v1; |
| | | String landRange = range; |
| | | String[] s1 = landRange.split(";"); |
| | | for (String ss : s1) { |
| | | String[] temp = ss.split(","); |
| | | Point2D.Double point = new Point2D.Double(Double.parseDouble(temp[0]), |
| | | Double.parseDouble(temp[1])); |
| | | points.add(point); |
| | | } |
| | | PolyginArea tp = new PolyginArea(); |
| | | double area = tp.getAreaByxy(points); |
| | | Integer landUnit = land.getLandUnit(); |
| | | //(0: 亩 1:分 2:平方米 |
| | | if (landUnit == 0) { |
| | | double v = area * 0.0015; |
| | | v1 = (double) Math.round(v * 100) / 100; |
| | | } else if (landUnit == 1) { |
| | | double v = area * 0.015; |
| | | v1 = (double) Math.round(v * 100) / 100; |
| | | } else { |
| | | v1 = (double) Math.round(area * 100) / 100; |
| | | } |
| | | land.setLandArea(String.valueOf(v1)); |
| | | } else { |
| | | v1 = (double) Math.round(area * 100) / 100; |
| | | land.setLandArea("0"); |
| | | } |
| | | land.setLandArea(String.valueOf(v1)); |
| | | |
| | | //图片转换上传 |
| | | if (null != land.getUrl() && !land.getUrl().equals("")) { |
| | | try { |
| | | //上传 |
| | | String url = ossEndpoint.uploadBase64String(land.getUrl()); |
| | | //回填url |
| | | land.setUrl(url); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | land.setType(1); |
| | | return R.status(landService.saveLandInfo(land)); |
| | | } |
| | |
| | | } else { |
| | | v1 = (double) Math.round(area * 100) / 100; |
| | | } |
| | | |
| | | //图片转换上传 |
| | | if (null != land.getUrl() && !land.getUrl().equals("")) { |
| | | try { |
| | | //上传 |
| | | String url = ossEndpoint.uploadBase64String(land.getUrl()); |
| | | //回填url |
| | | land.setUrl(url); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | land.setLandArea(String.valueOf(v1)); |
| | | land.setType(1); |
| | | return R.status(landService.updateLandById(land)); |
| | | } |
| | | |
| | | /** |
| | | * 地块详情页面修改地块面积 |
| | | */ |
| | | @PostMapping("/updateLandAr") |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "修改", notes = "传入land") |
| | | public R updateLandAr(@Valid @RequestBody Land land) { |
| | | String range = land.getLandRange(); |
| | | //坐标转换 |
| | | if (null != land.getLandRange() && !land.getLandRange().equals("")) { |
| | | //替换逗号为空格 |
| | | String sNull = land.getLandRange().replaceAll(",", " "); |
| | | //替换分号为逗号 |
| | | String replaceAll = sNull.replaceAll(";", ","); |
| | | land.setLandRange("'POLYGON((" + replaceAll + "))'"); |
| | | } |
| | | List<Point2D.Double> points = new ArrayList<Point2D.Double>(); |
| | | double v1; |
| | | String landRange = range; |
| | | String[] s1 = landRange.split(";"); |
| | | for (String ss : s1) { |
| | | String[] temp = ss.split(","); |
| | | Point2D.Double point = new Point2D.Double(Double.parseDouble(temp[0]), |
| | | Double.parseDouble(temp[1])); |
| | | points.add(point); |
| | | } |
| | | PolyginArea tp = new PolyginArea(); |
| | | double area = tp.getAreaByxy(points); |
| | | Integer landUnit = land.getLandUnit(); |
| | | //(0: 亩 1:分 2:平方米 |
| | | if (landUnit == 0) { |
| | | double v = area * 0.0015; |
| | | v1 = (double) Math.round(v * 100) / 100; |
| | | } else if (landUnit == 1) { |
| | | double v = area * 0.015; |
| | | v1 = (double) Math.round(v * 100) / 100; |
| | | } else { |
| | | v1 = (double) Math.round(area * 100) / 100; |
| | | } |
| | | |
| | | //图片转换上传 |
| | | if (null != land.getUrl() && !land.getUrl().equals("")) { |
| | | try { |
| | | //上传 |
| | | String url = ossEndpoint.uploadBase64String(land.getUrl()); |
| | | //回填url |
| | | land.setUrl(url); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | land.setLandArea(String.valueOf(v1)); |
| | | return R.status(landService.updateLandById(land)); |
| | | } |
| | | |
| | |
| | | @ApiOperationSupport(order = 7) |
| | | @ApiOperation(value = "逻辑删除", notes = "传入ids") |
| | | public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { |
| | | return R.status(landService.deleteLogic(Func.toLongList(ids))); |
| | | //先要判断该地块是否还有正在种植的作物,先结束才能删除地块 |
| | | List<LandVO> land= landService.findPlantInLand(ids); |
| | | if (land.size()<=0) { |
| | | return R.status(landService.deleteLogic(Func.toLongList(ids))); |
| | | }else { |
| | | throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("请先结束该地块正在种养品种")); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | |
| | | /** |
| | | * 地块列表(不分页) |
| | | * |
| | | * @param land |
| | | * @return |
| | | */ |
| | | @GetMapping("/getLandList") |
| | | public R getLandList(LandVO land) { |
| | | return R.data(landService.getLandList(land)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 首页地块统计接口 |
| | | */ |
| | | @GetMapping("/selectCount") |
| | | public R selectCount() { |
| | | List<Map<String, Object>> list = landService.selectZAre(); |
| | | List<Map<String, Object>> lists = landService.selectSAre(); |
| | | List list1 = landService.selectNum(); |
| | | public R selectCount(LandVO land) { |
| | | List<Map<String, Object>> list = landService.selectZAre(land); |
| | | List<Map<String, Object>> lists = landService.selectSAre(land); |
| | | List list1 = landService.selectNum(land); |
| | | //总面积 |
| | | Double num = 0.0; |
| | | for (int i = 0; i < list.size(); i++) { |
| | |
| | | if (unit.equals("0")) { |
| | | snum += area1; |
| | | } |
| | | if (unit.equals("1")) { |
| | | else if (unit.equals("1")) { |
| | | double v = area1 * 0.1; |
| | | snum += v; |
| | | } else { |
| | | } else{ |
| | | double v = area1 * 0.0015; |
| | | snum += v; |
| | | } |
| | |
| | | int size = list1.size(); |
| | | Map map = new HashMap(); |
| | | //地块使用率 |
| | | if(snum!=0.0|| num!=0.0){ |
| | | if (snum != 0.0 || num != 0.0) { |
| | | double v = snum / num; |
| | | double v1 = v * 100; |
| | | DecimalFormat df = new DecimalFormat("#0.00"); |
| | |
| | | map.put("zarea", (double) Math.round(num * 100) / 100); |
| | | map.put("sarea", (double) Math.round(snum * 100) / 100); |
| | | map.put("num", size); |
| | | } |
| | | else { |
| | | } else { |
| | | map.put("rate", 0.0); |
| | | map.put("zarea", 0.0); |
| | | map.put("sarea", 0.0); |
| | |
| | | |
| | | /** |
| | | * 大屏地块统计接口 |
| | | * |
| | | * @param land 农场 |
| | | * @return |
| | | */ |
| | | @GetMapping("/selectXCount") |
| | | public R selectXCount() { |
| | | List<Map<String, Object>> list = landService.selectZAre(); |
| | | List<Map<String, Object>> lists = landService.selectSAre(); |
| | | List<Map<String, Object>> listw = landService.selectWAre(); |
| | | List list1 = landService.selectNum(); |
| | | public R selectXCount(LandVO land) { |
| | | List<Map<String, Object>> list = landService.selectZAre(land); |
| | | List<Map<String, Object>> lists = landService.selectSAre(land); |
| | | List<Map<String, Object>> listw = landService.selectWAre(land); |
| | | List list1 = landService.selectNum(land); |
| | | //总面积 |
| | | Double num = 0.0; |
| | | for (int i = 0; i < list.size(); i++) { |
| | |
| | | return R.data(map); |
| | | } |
| | | |
| | | /** |
| | | * 查询统计地块是否有轮廓(是否有圈出区域) |
| | | * @param land |
| | | * @return |
| | | */ |
| | | @GetMapping("/getLandIsAreaStatistic") |
| | | public R getLandIsAreaStatistic(LandVO land){ |
| | | return R.data(landService.getLandIsAreaStatistic(land)); |
| | | } |
| | | |
| | | } |