From 2f22c7bbea802431bcec69418f5c7ddfcb7b3787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Thu, 23 Oct 2025 22:17:39 +0800 Subject: [PATCH] =?UTF-8?q?feat=20(farm):=20=E7=A7=9F=E6=88=B7=E5=AF=BC?= =?UTF-8?q?=E5=85=A5/=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - --- .../baseinfo/vo/BaseInfoRespVO.java | 4 ++ .../vo/PlotLesseeForExportExcelRespVO.java | 4 ++ .../vo/PlotLesseeForImportExcelRespVO.java | 4 ++ .../service/baseinfo/BaseInfoServiceImpl.java | 11 ++++- .../deviceinfo/DeviceInfoServiceImpl.java | 7 ++- .../service/plotinfo/PlotInfoService.java | 2 + .../service/plotinfo/PlotInfoServiceImpl.java | 43 +++++++++++++++---- 7 files changed, 62 insertions(+), 13 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/BaseInfoRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/BaseInfoRespVO.java index 315ccbc1..c9c8b0c2 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/BaseInfoRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/BaseInfoRespVO.java @@ -87,8 +87,12 @@ public class BaseInfoRespVO { private String plotManager; @Schema(description = "地块坐标") private String plotPoint; + private Integer plotLeaseStatus; + private String plotLeaseStatusName; @Schema(description = "网格信息") private List gridOverviewList; + @Schema(description = "户主流转信息") + private List lesseeList; } @Data diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForExportExcelRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForExportExcelRespVO.java index c0f69ccc..01b35f6c 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForExportExcelRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForExportExcelRespVO.java @@ -4,10 +4,14 @@ import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; @Schema(description = "管理后台 - 地块户主 - 导出") @Data +@AllArgsConstructor +@NoArgsConstructor @ExcelIgnoreUnannotated public class PlotLesseeForExportExcelRespVO { diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForImportExcelRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForImportExcelRespVO.java index b085d2e1..934f88ba 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForImportExcelRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/baseinfo/vo/PlotLesseeForImportExcelRespVO.java @@ -4,13 +4,17 @@ import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.time.LocalDate; @Schema(description = "管理后台 - 地块户主 - 导入") @Data +@AllArgsConstructor +@NoArgsConstructor @Accessors(chain = false) public class PlotLesseeForImportExcelRespVO { 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 2949bc4c..4eeff681 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 @@ -35,6 +35,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.annotation.Resource; import lombok.SneakyThrows; import org.apache.commons.lang3.ObjectUtils; @@ -50,6 +51,7 @@ import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; +import static cn.iocoder.yudao.module.farm.enums.CommonConstants.LEASE_STATUS_MAP; import static cn.iocoder.yudao.module.farm.enums.CommonConstants.PLOT_TYPE_NAME_MAP; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*; @@ -307,10 +309,15 @@ public class BaseInfoServiceImpl implements BaseInfoService { private List packagePlotInfo(Map employeeMap, List plotList) { List targetList = new ArrayList<>(); for (PlotInfoDO aDo : plotList) { - String plotManager = employeeMap.getOrDefault(aDo.getEmployeeId(), "系统"); + // 网格 List gridInfos = this.packageGridInfo(aDo.getId()); + // 户主 + List lesseeList = plotInfoService.getPlotLesseeList2(aDo.getId()); + String plotManager = employeeMap.getOrDefault(aDo.getEmployeeId(), "系统"); String typeName = PLOT_TYPE_NAME_MAP.get(Integer.valueOf(aDo.getType())); - BaseInfoRespVO.PlotInfo target = new BaseInfoRespVO.PlotInfo(Integer.valueOf(aDo.getType()),typeName,aDo.getId(), aDo.getPlotName(), aDo.getPlotColor(), BigDecimalUtil.roundedViaMath( aDo.getPlotArea()), plotManager, aDo.getPoint(), gridInfos); + BaseInfoRespVO.PlotInfo target = new BaseInfoRespVO.PlotInfo(Integer.valueOf(aDo.getType()),typeName,aDo.getId(), aDo.getPlotName(), aDo.getPlotColor(), + BigDecimalUtil.roundedViaMath( aDo.getPlotArea()), plotManager, aDo.getPoint(), + aDo.getPlotLeaseStatus(), LEASE_STATUS_MAP.get(aDo.getPlotLeaseStatus()),gridInfos,lesseeList); targetList.add(target); } return targetList; diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java index 96c6a7da..fb36cdbc 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java @@ -479,12 +479,12 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { // 获取设备商数据 switch (typeCode) { case DEVICE_TYPE_SOIL: - DeviceInfoDetailV2RespVO.SoilInfo soilInfo = getSoilInfo(d.getDeviceUniqueId(), d.getPlotId(), 12,Long.valueOf(d.getTenantId())); + DeviceInfoDetailV2RespVO.SoilInfo soilInfo = getSoilInfo(d.getDeviceUniqueId(), d.getPlotId(), 12,Long.valueOf(tenantId)); List rows1 = this.getSoilData(d.getDeviceName(), soilInfo); rows.addAll(rows1); break; case DEVICE_TYPE_WF: - DeviceInfoDetailV2RespVO.WfInfo wfInfo = getWfInfo(d.getDeviceUniqueId(), d.getPlotId(),Long.valueOf(d.getTenantId())); + DeviceInfoDetailV2RespVO.WfInfo wfInfo = getWfInfo(d.getDeviceUniqueId(), d.getPlotId(),Long.valueOf(tenantId)); List rows2 = this.getWfData( wfInfo); rows.addAll(rows2); break; @@ -538,6 +538,9 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { List rows = new ArrayList<>(); RealTimeDataRespVO realTimeDataRespVO = (RealTimeDataRespVO) soilInfo.getRealTimeData().getData(); + if (ObjectUtils.isEmpty(realTimeDataRespVO)) { + return rows; + } List data = realTimeDataRespVO.getData(); for (RealTimeDataRespVO.DeviceInfo d : data) { rows.add(new DeviceMonitorDataRespVO.Row(name, ONLINE_MAP.get(d.getStatus()), "")); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java index cd1a8647..f2b2c7a5 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java @@ -125,4 +125,6 @@ public interface PlotInfoService { * @return */ List getPlotLesseeList(String plotId); + + List getPlotLesseeList2(String plotId); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java index b70d7bd3..9a1a5f87 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java @@ -31,8 +31,7 @@ import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; -import static cn.iocoder.yudao.module.farm.enums.CommonConstants.LEASE_STATUS_MAP; -import static cn.iocoder.yudao.module.farm.enums.CommonConstants.PLOT_TYPE_NAME_MAP; +import static cn.iocoder.yudao.module.farm.enums.CommonConstants.*; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*; /** @@ -205,27 +204,42 @@ public class PlotInfoServiceImpl implements PlotInfoService { @Override public void setPlotLesseeInfo(List req) { - Map collect = plotLesseeMapper.selectList().stream().collect(Collectors.toMap(PlotLesseeDO::getPlotName, PlotLesseeDO::getId, (v1, v2) -> v1)); - + Map baseNameMap = baseInfoMapper.selectList().stream().collect(Collectors.toMap(BaseInfoDO::getId, BaseInfoDO::getName, (v1, v2) -> v1)); + Map plotNameMap = plotInfoMapper.selectList().stream().collect(Collectors.toMap(PlotInfoDO::getPlotName, PlotInfoDO::getId, (v1, v2) -> v1)); for (PlotLesseeForImportExcelRespVO e : req) { - if (!collect.containsKey(e.getPlotName())) { - continue; - } if (ObjectUtils.isEmpty(e.getLeaseName()) || ObjectUtils.isEmpty(e.getLeaseIdCard()) || ObjectUtils.isEmpty(e.getLeasePhone() ) || ObjectUtils.isEmpty(e.getLeaseStartDate()) || ObjectUtils.isEmpty(e.getLeaseEndDate())) { continue; } + PlotInfoDO plotInfoDO = plotInfoMapper.selectOne(PlotInfoDO::getPlotName, e.getPlotName()); + + if (ObjectUtils.isEmpty(plotInfoDO)) { + continue; + } + + // 更新地块信息 + plotInfoDO.setPlotLeaseStatus(YES_CODE); + plotInfoMapper.updateById(plotInfoDO); + + // 插入户主信息 PlotLesseeDO target = new PlotLesseeDO(); - target.setId(collect.get(e.getPlotName())); target.setLeaseName(e.getLeaseName()); target.setLeaseIdCard(e.getLeaseIdCard()); target.setLeasePhone(e.getLeasePhone()); target.setLeaseStartDate(e.getLeaseStartDate()); target.setLeaseEndDate(e.getLeaseEndDate()); + + target.setId(IdUtil.fastUUID()); + target.setTenantId(String.valueOf(getLoginUser().getTenantId())); target.setLeaseStatus(CommonConstants.YES_CODE); - plotLesseeMapper.updateById(target); + + target.setBaseId(plotInfoDO.getBaseId()); + target.setBaseName(baseNameMap.get(plotInfoDO.getBaseId())); + target.setPlotId(plotInfoDO.getId()); + target.setPlotName(plotInfoDO.getPlotName()); + plotLesseeMapper.insert(target); } } @@ -350,4 +364,15 @@ public class PlotInfoServiceImpl implements PlotInfoService { return BeanUtils.toBean(list, PlotLesseeDetailsRespVO.class); } + + @Override + public List getPlotLesseeList2(String plotId) { + LambdaQueryWrapperX x = new LambdaQueryWrapperX<>(); + x.eq(PlotLesseeDO::getDeleted, CommonConstants.NO_CODE); + x.eq(PlotLesseeDO::getLeaseStatus, YES_CODE); + x.eq(PlotLesseeDO::getPlotId, plotId); + List list = plotLesseeMapper.selectList(x); + + return BeanUtils.toBean(list, PlotLesseeDetailsRespVO.class); + } } \ No newline at end of file