From 8c003ab8712ea293c0bc4d48e98cb466ae885652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Tue, 9 Sep 2025 18:05:27 +0800 Subject: [PATCH] =?UTF-8?q?fix=20(farm):=20=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 首页相应json格式,根据前端需求调整 --- .../controller/admin/home/HomeController.java | 18 ++--- .../controller/admin/home/vo/HomeInfo.java | 28 +++++--- .../service/baseinfo/BaseInfoServiceImpl.java | 3 +- .../farm/service/home/HomeServiceImpl.java | 68 +++++++++++-------- 4 files changed, 72 insertions(+), 45 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java index bb9d23c7..4d62a544 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java @@ -29,20 +29,20 @@ public class HomeController { @Resource private HomeService homeService; -// @Operation(summary = "农场首页") -// @GetMapping("") -// @Parameter(name = "baseId", description = "基地ID") -// public CommonResult getBaseInfo(@RequestParam("baseId") String baseId) { -// return success(homeService.getHomeInfo(baseId)); -// } - @Operation(summary = "农场首页") @GetMapping("") @Parameter(name = "baseId", description = "基地ID") - public CommonResult> getBaseInfo(@RequestParam("baseId") String baseId) { - return success(homeService.getHomeInfoList(baseId)); + public CommonResult getBaseInfo(@RequestParam("baseId") String baseId) { + return success(homeService.getHomeInfo(baseId)); } +// @Operation(summary = "农场首页") +// @GetMapping("") +// @Parameter(name = "baseId", description = "基地ID") +// public CommonResult> getBaseInfo(@RequestParam("baseId") String baseId) { +// return success(homeService.getHomeInfoList(baseId)); +// } + @Operation(summary = "农场首页-基地名称列表") @GetMapping("/baseNames") public CommonResult> getBaseNameList() { diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/vo/HomeInfo.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/vo/HomeInfo.java index f9a0a8aa..26e118a5 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/vo/HomeInfo.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/vo/HomeInfo.java @@ -20,19 +20,29 @@ public class HomeInfo { @Schema(description = "基地统计信息概述") private BaseOverviewInfo baseOverviewInfo; - @Schema(description = "基地弹框信息") - private List plotPopupFrames; - @Schema(description = "地块集合") - private List plotInfos; - @Schema(description = "计划集合") - private List planInfos; @Schema(description = "统计信息") private StatisticalInfo statisticalInfo; + @Schema(description = "基地信息") + private List baseList; public HomeInfo(BaseOverviewInfo baseOverviewInfo) { this.baseOverviewInfo = baseOverviewInfo; } + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class BaseInfo { + @Schema(description = "基地ID") + private String baseId; + @Schema(description = "基地名称") + private String baseName; + @Schema(description = "基地坐标") + private String point; + @Schema(description = "地块集合") + private List plotInfos; + } + @Data @AllArgsConstructor @NoArgsConstructor @@ -71,11 +81,11 @@ public class HomeInfo { @Schema(description = "总面积") private Integer cropCount; @Schema(description = "在种作物数量") - private Double totalArea; + private Integer totalArea; @Schema(description = "在职员工人数") private Integer personnelCount; - public BaseOverviewInfo(String baseId, Integer baseCount, Integer cropCount, Double totalArea, Integer personnelCount) { + public BaseOverviewInfo(String baseId, Integer baseCount, Integer cropCount, Integer totalArea, Integer personnelCount) { this.baseId = baseId; this.baseCount = baseCount; this.cropCount = cropCount; @@ -118,6 +128,8 @@ public class HomeInfo { private String plotColor; @Schema(description = "地块或作物集合") private PlotOrCropInfo plotOrCropInfo; + @Schema(description = "基地弹框信息") + private List plotPopupFrames; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java index dc8e6b69..c503be9c 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java @@ -215,7 +215,8 @@ public class BaseInfoServiceImpl implements BaseInfoService { List pageResult = this.getList(new BaseInfoPageReqVO()); List baseList = BeanUtils.toBean(pageResult, BaseInfoRespVO.class); this.packageBaseInfo(tenantId, baseList, employeeMap); - + // 基地面积 取整 + baseList.forEach(e -> e.setArea(BigDecimalUtil.roundedViaMath(e.getArea()))); return new TenantInfoRespVO(tenantInfo, baseList); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeServiceImpl.java index 7edc3a54..7fb2d1ca 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeServiceImpl.java @@ -15,8 +15,10 @@ import cn.iocoder.yudao.module.farm.service.modelmanagement.ModelManagementServi import cn.iocoder.yudao.module.farm.service.personnelmanagement.PersonnelManagementService; import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService; import cn.iocoder.yudao.module.farm.service.productionplan.ProductionPlanService; +import cn.iocoder.yudao.module.farm.utils.BigDecimalUtil; import cn.iocoder.yudao.module.farm.utils.LeafletjsUtil; import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -63,34 +65,40 @@ public class HomeServiceImpl implements HomeService { @Override public HomeInfo getHomeInfo(String baseId) { - - if (baseId.trim().isEmpty()) { - BaseOverviewInfo baseOverviewInfo = this.getCompanyInfo(); - return new HomeInfo(baseOverviewInfo); - } - // 员工集合 Map employeeNameMap = personnelManagementService.getEmployeeNameMap(); - BaseInfoDO baseObj = baseInfoService.getBaseInfo(baseId); - BaseOverviewInfo baseOverviewInfo = this.getBaseOverviewInfo(baseObj, employeeNameMap); - List plotPopupFrames = this.getPlotPopupFrame(baseObj, employeeNameMap); - List plotInfos = this.getPlotInfoList(baseId, employeeNameMap); -// List planInfos = this.getPlanInfoList(baseId, "", null); - List planInfos = getPlans(plotInfos); - StatisticalInfo statisticalInfo = this.getStatisticalInfo(baseId); - return new HomeInfo(baseOverviewInfo, plotPopupFrames, plotInfos, planInfos, statisticalInfo); + BaseOverviewInfo baseOverviewInfo = new BaseOverviewInfo(); + StatisticalInfo statisticalInfo = new StatisticalInfo(); + if (StringUtils.isEmpty(baseId)) { + baseOverviewInfo = this.getCompanyInfo(); + statisticalInfo = this.getStatisticalInfo(baseId); + } else { + BaseInfoDO baseObj = baseInfoService.getBaseInfo(baseId); + baseOverviewInfo = this.getBaseOverviewInfo(baseObj, employeeNameMap); + statisticalInfo = this.getStatisticalInfo(baseId); + } + + List baseList = new ArrayList<>(); + for (BaseInfoDO baseInfoDO : baseInfoService.getBaseInfosById(baseId)) { + baseList.add(this.getBaseInfo(baseInfoDO,employeeNameMap)); + } + return new HomeInfo(baseOverviewInfo, statisticalInfo,baseList); } - private List getPlans(List plotInfos) { - List res = new ArrayList<>(); - for (PlotInfo plotInfo : plotInfos) { - res.addAll(plotInfo.getPlotOrCropInfo().getPlanInfos()); - } - return res; + private BaseInfo getBaseInfo(BaseInfoDO baseObj,Map employeeNameMap) { + String baseId = baseObj.getId(); + String baseName = baseObj.getName(); + String point = baseObj.getPoint(); + List plotInfos = this.getPlotInfoList(baseObj, employeeNameMap); + return new BaseInfo(baseId,baseName,point,plotInfos); } private StatisticalInfo getStatisticalInfo(String baseId) { + if (StringUtils.isEmpty(baseId)) { + return new StatisticalInfo(0,0,0); + } + Integer taskCount = productionPlanService.getTodayTaskCount(baseId); Integer warningCount = 0; // TODO: 2025/9/1 告警数量 Integer iotCount = 0; // TODO: 2025/9/1 物联设备数量 @@ -107,10 +115,11 @@ public class HomeServiceImpl implements HomeService { plotRatio = growingPlotCount + "/" + plotInfos.size(); } - BaseOverviewInfo res = new BaseOverviewInfo(); + // 统计基地信息 + BaseOverviewInfo res = this.getCompanyInfo(); res.setBaseId(baseObj.getId()); res.setBaseName(baseObj.getName()); - res.setBaseArea(baseObj.getArea()); + res.setBaseArea(BigDecimalUtil.roundedViaMath(baseObj.getArea())); res.setManager(employeeName); res.setPoint(baseObj.getPoint()); res.setPointName(""); // TODO: 2025/8/31 需要前端传入,才能获取 @@ -132,23 +141,27 @@ public class HomeServiceImpl implements HomeService { return targetList; } - private List getPlotInfoList(String baseId,Map employeeNameMap) { + private List getPlotInfoList(BaseInfoDO baseObj,Map employeeNameMap) { List targetList = new ArrayList<>(); - List plotList = plotInfoService.getPlotInfos(baseId); + List plotList = plotInfoService.getPlotInfos(baseObj.getId()); for (PlotInfoDO e : plotList) { String employeeName = personnelManagementService.getEmployeeNameMap(employeeNameMap, e.getEmployeeId()); + // 地块详情 (包含计划信息) PlotOrCropInfo plotOrCropInfo = this.getPlotOrCropInfoList(e,"地块详情",employeeName); + // 地块浮框信息 + List plotPopupFrame = this.getPlotPopupFrame(baseObj, employeeNameMap); PlotInfo t = new PlotInfo(); t.setBaseId(e.getBaseId()); - t.setBaseName(e.getBaseName()); + t.setBaseName(baseObj.getName()); t.setPlotId(e.getPlotId()); t.setPlotName(e.getPlotName()); - t.setPlotArea(e.getPlotArea()); + t.setPlotArea(BigDecimalUtil.roundedViaMath(e.getPlotArea())); t.setManager(employeeName); t.setPoint(e.getPoint()); t.setPlotColor(e.getPlotColor()); t.setPlotOrCropInfo(plotOrCropInfo); + t.setPlotPopupFrames(plotPopupFrame); targetList.add(t); } return targetList; @@ -246,7 +259,8 @@ public class HomeServiceImpl implements HomeService { LoginUser user = getLoginUser(); int baseCount = baseInfoService.getBaseCount(user.getTenantId()); // 基地数量 int cropCount = cropFarmingCenterService.getCropCount(user.getTenantId()); // 作物数量 - Double totalArea = cropFarmingCenterService.getTotalArea(user.getTenantId()); // 总面积 + Double temp = cropFarmingCenterService.getTotalArea(user.getTenantId()); // 总面积 + int totalArea = (int) Math.round(temp); int personnelCount = personnelManagementService.personnelCount(user.getTenantId()); // 在职人员 return new BaseOverviewInfo("",baseCount,cropCount,totalArea,personnelCount); }