From e696248c800434c164d8247bbc3374c97a00004a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BE=E5=90=9B=E7=A6=B9?= <2673609096@qq.com>
Date: Sun, 24 Aug 2025 22:14:21 +0800
Subject: [PATCH] =?UTF-8?q?farm=E6=A8=A1=E5=9D=97-=E6=A8=A1=E5=9E=8B?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5=E9=9B=86=E5=90=88=E4=BA=92?=
=?UTF-8?q?=E8=BD=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mybatis/core/dataobject/BaseDO.java | 8 +--
.../ModelManagementController.java | 36 +++++++++--
.../vo/ModelManagementPageReqVO.java | 8 ++-
.../vo/ModelManagementRespVO.java | 9 ++-
.../vo/ModelManagementSaveReqVO.java | 15 +++--
.../modelmanagement/ModelManagementDO.java | 62 ++++++++++++++++++-
.../ModelManagementServiceImpl.java | 33 +++++++++-
7 files changed, 155 insertions(+), 16 deletions(-)
diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java
index 7e07fd8e..7d640f95 100644
--- a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java
+++ b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java
@@ -13,7 +13,7 @@ import java.time.LocalDateTime;
/**
* 基础实体对象
- *
+ *
* 为什么实现 {@link TransPojo} 接口?
* 因为使用 Easy-Trans TransType.SIMPLE 模式,集成 MyBatis Plus 查询
*
@@ -35,14 +35,14 @@ public abstract class BaseDO implements Serializable, TransPojo {
private LocalDateTime updateTime;
/**
* 创建者,目前使用 SysUser 的 id 编号
- *
+ *
* 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。
*/
@TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR)
private String creator;
/**
* 更新者,目前使用 SysUser 的 id 编号
- *
+ *
* 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。
*/
@TableField(fill = FieldFill.INSERT_UPDATE, jdbcType = JdbcType.VARCHAR)
@@ -56,7 +56,7 @@ public abstract class BaseDO implements Serializable, TransPojo {
/**
* 把 creator、createTime、updateTime、updater 都清空,避免前端直接传递 creator 之类的字段,直接就被更新了
*/
- public void clean(){
+ public void clean() {
this.creator = null;
this.createTime = null;
this.updater = null;
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java
index 50cc3a87..08f45f24 100644
--- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java
@@ -89,14 +89,14 @@ public class ModelManagementController {
@Operation(summary = "获得发布模型分页")
public CommonResult> getModelManagementPageRelease(@Valid ModelManagementPageReqVO pageReqVO) {
PageResult pageResult = modelManagementService.getModelManagementPageRelease(pageReqVO);
- return success(BeanUtils.toBean(pageResult, ModelManagementRespVO.class));
+ return success(convertPageResult(pageResult));
}
@GetMapping("/page")
@Operation(summary = "获得模型管理分页")
public CommonResult> getModelManagementPage(@Valid ModelManagementPageReqVO pageReqVO) {
PageResult pageResult = modelManagementService.getModelManagementPage(pageReqVO);
- return success(BeanUtils.toBean(pageResult, ModelManagementRespVO.class));
+ return success(convertPageResult(pageResult));
}
@GetMapping("/export-excel")
@@ -107,8 +107,36 @@ public class ModelManagementController {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List list = modelManagementService.getModelManagementPage(pageReqVO).getList();
// 导出 Excel
- ExcelUtils.write(response, "模型管理.xls", "数据", ModelManagementRespVO.class,
- BeanUtils.toBean(list, ModelManagementRespVO.class));
+ List respVOList = list.stream()
+ .map(this::convertToRespVO)
+ .collect(java.util.stream.Collectors.toList());
+ ExcelUtils.write(response, "模型管理.xls", "数据", ModelManagementRespVO.class, respVOList);
+ }
+
+ /**
+ * 转换分页结果,处理suitablePlantingAreas字段的转换
+ */
+ private PageResult convertPageResult(PageResult pageResult) {
+ List respVOList = pageResult.getList().stream()
+ .map(this::convertToRespVO)
+ .collect(java.util.stream.Collectors.toList());
+
+ return new PageResult<>(respVOList, pageResult.getTotal());
+ }
+
+ /**
+ * 转换单个ModelManagementDO为ModelManagementRespVO
+ */
+ private ModelManagementRespVO convertToRespVO(ModelManagementDO modelManagementDO) {
+ ModelManagementRespVO respVO = BeanUtils.toBean(modelManagementDO, ModelManagementRespVO.class);
+
+ // 设置suitablePlantingAreas字段,触发自动转换
+ respVO.setSuitablePlantingAreas(modelManagementDO.getSuitablePlantingAreasList());
+
+ // 设置speciesImageList字段,触发自动转换
+ respVO.setSpeciesImageList(modelManagementDO.getSpeciesImageList());
+
+ return respVO;
}
}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementPageReqVO.java
index f6a10d11..f884f42e 100644
--- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementPageReqVO.java
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementPageReqVO.java
@@ -29,7 +29,7 @@ public class ModelManagementPageReqVO extends PageParam {
private String harvest;
@Schema(description = "地区多选用,隔开")
- private String suitablePlantingAreas;
+ private List suitablePlantingAreas;
@Schema(description = "品种描述", example = "随便")
private String description;
@@ -54,4 +54,10 @@ public class ModelManagementPageReqVO extends PageParam {
private String tenantId;
private int isRelease;
private int quoteCount;
+ @Schema(description = "物种图片")
+ private String speciesImage;
+
+ @Schema(description = "物种图片集合")
+ private List speciesImageList;
+ private Date releaseTime;
}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementRespVO.java
index a662fec3..daa47364 100644
--- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementRespVO.java
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementRespVO.java
@@ -9,6 +9,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
+import java.util.Date;
import java.util.List;
@Schema(description = "管理后台 - 模型管理 Response VO")
@@ -42,7 +43,7 @@ public class ModelManagementRespVO {
@Schema(description = "地区多选用,隔开")
@ExcelProperty("地区多选用,隔开")
- private String suitablePlantingAreas;
+ private List suitablePlantingAreas;
@Schema(description = "品种描述", example = "随便")
@ExcelProperty("品种描述")
@@ -73,6 +74,12 @@ public class ModelManagementRespVO {
private String tenantId;
private int isRelease;
private int quoteCount;
+ @Schema(description = "物种图片")
+ private String speciesImage;
+
+ @Schema(description = "物种图片集合")
+ private List speciesImageList;
+ private Date releaseTime;
private List modelCycles;
}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementSaveReqVO.java
index 1e784e68..557d2704 100644
--- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementSaveReqVO.java
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementSaveReqVO.java
@@ -1,9 +1,10 @@
package cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import jakarta.validation.constraints.*;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
@Schema(description = "管理后台 - 模型管理新增/修改 Request VO")
@Data
@@ -28,7 +29,7 @@ public class ModelManagementSaveReqVO {
private String harvest;
@Schema(description = "地区多选用,隔开")
- private String suitablePlantingAreas;
+ private List suitablePlantingAreas;
@Schema(description = "品种描述", example = "随便")
private String description;
@@ -49,4 +50,10 @@ public class ModelManagementSaveReqVO {
private String tenantId;
private int isRelease;
private int quoteCount;
+ @Schema(description = "物种图片")
+ private String speciesImage;
+
+ @Schema(description = "物种图片集合")
+ private List speciesImageList;
+ private Date releaseTime;
}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelmanagement/ModelManagementDO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelmanagement/ModelManagementDO.java
index 1185980a..6e10a24f 100644
--- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelmanagement/ModelManagementDO.java
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelmanagement/ModelManagementDO.java
@@ -3,10 +3,16 @@ package cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
+import java.util.Date;
+import java.util.List;
+import cn.iocoder.yudao.module.farm.framework.util.ImageCollectionUtil;
+
/**
* 模型管理 DO
*
@@ -52,9 +58,15 @@ public class ModelManagementDO extends BaseDO {
*/
private String harvest;
/**
- * 地区多选用,隔开
+ * 地区多选用,隔开(数据库存储为逗号分隔的字符串)
*/
private String suitablePlantingAreas;
+
+ /**
+ * 适合种植区域集合(业务层使用)
+ */
+ @TableField(exist = false)
+ private List suitablePlantingAreasList;
/**
* 品种描述
*/
@@ -83,4 +95,52 @@ public class ModelManagementDO extends BaseDO {
private String taskId;
private int isRelease;
private int quoteCount;
+ /**
+ * 物种图片(数据库存储为逗号分隔的字符串)
+ */
+ private String speciesImage;
+
+ /**
+ * 物种图片集合(业务层使用)
+ */
+ @TableField(exist = false)
+ private List speciesImageList;
+ @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date releaseTime;
+
+ /**
+ * 获取物种图片集合
+ */
+ public List getSpeciesImageList() {
+ if (speciesImageList == null) {
+ speciesImageList = ImageCollectionUtil.toImageList(this.speciesImage);
+ }
+ return speciesImageList;
+ }
+
+ /**
+ * 设置物种图片集合
+ */
+ public void setSpeciesImageList(List speciesImageList) {
+ this.speciesImageList = speciesImageList;
+ this.speciesImage = ImageCollectionUtil.toDatabaseString(speciesImageList);
+ }
+
+ /**
+ * 获取适合种植区域集合
+ */
+ public List getSuitablePlantingAreasList() {
+ if (suitablePlantingAreasList == null) {
+ suitablePlantingAreasList = ImageCollectionUtil.toImageList(this.suitablePlantingAreas);
+ }
+ return suitablePlantingAreasList;
+ }
+
+ /**
+ * 设置适合种植区域集合
+ */
+ public void setSuitablePlantingAreasList(List suitablePlantingAreasList) {
+ this.suitablePlantingAreasList = suitablePlantingAreasList;
+ this.suitablePlantingAreas = ImageCollectionUtil.toDatabaseString(suitablePlantingAreasList);
+ }
}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java
index cae21b07..da513295 100644
--- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java
@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -67,6 +68,19 @@ public class ModelManagementServiceImpl implements ModelManagementService {
modelManagement.setId(IdUtil.fastUUID());
modelManagement.setTenantId(String.valueOf(user.getTenantId()));
modelManagement.setIsRelease(0);
+ modelManagement.setType(CommonConstants.MODEL_TYPE_1);
+ // 处理suitablePlantingAreas字段,优先使用集合
+ if (createReqVO.getSuitablePlantingAreas() != null && !createReqVO.getSuitablePlantingAreas().isEmpty()) {
+ modelManagement.setSuitablePlantingAreasList(createReqVO.getSuitablePlantingAreas());
+ }
+
+ // 处理speciesImage字段,优先使用图片集合
+ if (createReqVO.getSpeciesImageList() != null && !createReqVO.getSpeciesImageList().isEmpty()) {
+ modelManagement.setSpeciesImageList(createReqVO.getSpeciesImageList());
+ } else if (createReqVO.getSpeciesImage() != null) {
+ modelManagement.setSpeciesImage(createReqVO.getSpeciesImage());
+ }
+
modelManagementMapper.insert(modelManagement);
// 返回
@@ -157,6 +171,19 @@ public class ModelManagementServiceImpl implements ModelManagementService {
validateModelManagementExists(updateReqVO.getId());
// 更新
ModelManagementDO updateObj = BeanUtils.toBean(updateReqVO, ModelManagementDO.class);
+
+ // 处理suitablePlantingAreas字段,优先使用集合
+ if (updateReqVO.getSuitablePlantingAreas() != null && !updateReqVO.getSuitablePlantingAreas().isEmpty()) {
+ updateObj.setSuitablePlantingAreasList(updateReqVO.getSuitablePlantingAreas());
+ }
+
+ // 处理speciesImage字段,优先使用图片集合
+ if (updateReqVO.getSpeciesImageList() != null && !updateReqVO.getSpeciesImageList().isEmpty()) {
+ updateObj.setSpeciesImageList(updateReqVO.getSpeciesImageList());
+ } else if (updateReqVO.getSpeciesImage() != null) {
+ updateObj.setSpeciesImage(updateReqVO.getSpeciesImage());
+ }
+
modelManagementMapper.updateById(updateObj);
}
@@ -185,6 +212,10 @@ public class ModelManagementServiceImpl implements ModelManagementService {
public ModelManagementRespVO getModelManagement(String id) {
ModelManagementDO modelManagementDO = modelManagementMapper.selectById(id);
ModelManagementRespVO bean = BeanUtils.toBean(modelManagementDO, ModelManagementRespVO.class);
+
+ // 设置suitablePlantingAreas字段,触发自动转换
+ bean.setSuitablePlantingAreas(modelManagementDO.getSuitablePlantingAreasList());
+
List vos = new ArrayList<>();
List list = modelCycleMapper.selectListByModelId(id);
list.forEach(cycle -> {
@@ -297,10 +328,10 @@ public class ModelManagementServiceImpl implements ModelManagementService {
@Override
public void isRelease(ModelManagementSaveReqVO updateReqVO) {
-
ModelManagementDO modelManagementDO = modelManagementMapper.selectById(updateReqVO.getId());
if (modelManagementDO.getIsRelease() == 0) {
modelManagementDO.setIsRelease(1);
+ modelManagementDO.setReleaseTime(new Date());
} else {
modelManagementDO.setIsRelease(0);
}