farm模块-物种三级树,模型新增关联物种信息

This commit is contained in:
顾君禹
2025-08-26 23:56:30 +08:00
parent 68c19097c6
commit 092f9d1787
9 changed files with 176 additions and 41 deletions

View File

@@ -3,10 +3,9 @@ package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryRespVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesThreeLevelTreeRespVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.Valid;
import jakarta.validation.Valid;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -44,14 +43,12 @@ public class SpeciesLibraryController {
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建物种库维护") @Operation(summary = "创建物种库维护")
public CommonResult<String> createSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO createReqVO) { public CommonResult<String> createSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO createReqVO) {
return success(speciesLibraryService.createSpeciesLibrary(createReqVO)); return success(speciesLibraryService.createSpeciesLibrary(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新物种库维护") @Operation(summary = "更新物种库维护")
public CommonResult<Boolean> updateSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO updateReqVO) { public CommonResult<Boolean> updateSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO updateReqVO) {
speciesLibraryService.updateSpeciesLibrary(updateReqVO); speciesLibraryService.updateSpeciesLibrary(updateReqVO);
return success(true); return success(true);
@@ -60,7 +57,6 @@ public class SpeciesLibraryController {
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除物种库维护") @Operation(summary = "删除物种库维护")
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
public CommonResult<Boolean> deleteSpeciesLibrary(@RequestParam("id") String id) { public CommonResult<Boolean> deleteSpeciesLibrary(@RequestParam("id") String id) {
speciesLibraryService.deleteSpeciesLibrary(id); speciesLibraryService.deleteSpeciesLibrary(id);
return success(true); return success(true);
@@ -69,7 +65,6 @@ public class SpeciesLibraryController {
@DeleteMapping("/delete-list") @DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true) @Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除物种库维护") @Operation(summary = "批量删除物种库维护")
public CommonResult<Boolean> deleteSpeciesLibraryList(@RequestParam("ids") List<String> ids) { public CommonResult<Boolean> deleteSpeciesLibraryList(@RequestParam("ids") List<String> ids) {
speciesLibraryService.deleteSpeciesLibraryListByIds(ids); speciesLibraryService.deleteSpeciesLibraryListByIds(ids);
return success(true); return success(true);
@@ -78,23 +73,28 @@ public class SpeciesLibraryController {
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得物种库维护") @Operation(summary = "获得物种库维护")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<SpeciesLibraryRespVO> getSpeciesLibrary(@RequestParam("id") String id) { public CommonResult<SpeciesLibraryRespVO> getSpeciesLibrary(@RequestParam("id") String id) {
SpeciesLibraryDO speciesLibrary = speciesLibraryService.getSpeciesLibrary(id); SpeciesLibraryDO speciesLibrary = speciesLibraryService.getSpeciesLibrary(id);
return success(BeanUtils.toBean(speciesLibrary, SpeciesLibraryRespVO.class)); SpeciesLibraryRespVO resp = BeanUtils.toBean(speciesLibrary, SpeciesLibraryRespVO.class);
return success(resp);
} }
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得物种库维护分页") @Operation(summary = "获得物种库维护分页")
public CommonResult<PageResult<SpeciesLibraryRespVO>> getSpeciesLibraryPage(@Valid SpeciesLibraryPageReqVO pageReqVO) { public CommonResult<PageResult<SpeciesLibraryRespVO>> getSpeciesLibraryPage(@Valid SpeciesLibraryPageReqVO pageReqVO) {
PageResult<SpeciesLibraryDO> pageResult = speciesLibraryService.getSpeciesLibraryPage(pageReqVO); PageResult<SpeciesLibraryDO> pageResult = speciesLibraryService.getSpeciesLibraryPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, SpeciesLibraryRespVO.class)); PageResult<SpeciesLibraryRespVO> resp = BeanUtils.toBean(pageResult, SpeciesLibraryRespVO.class);
return success(resp);
}
@GetMapping("/tree")
@Operation(summary = "物种库三级树(speciesName1->speciesName2->cultivarName)")
public CommonResult<List<SpeciesThreeLevelTreeRespVO>> getSpeciesThreeLevelTree() {
return success(speciesLibraryService.getSpeciesThreeLevelTree());
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出物种库维护 Excel") @Operation(summary = "导出物种库维护 Excel")
@ApiAccessLog(operateType = EXPORT) @ApiAccessLog(operateType = EXPORT)
public void exportSpeciesLibraryExcel(@Valid SpeciesLibraryPageReqVO pageReqVO, public void exportSpeciesLibraryExcel(@Valid SpeciesLibraryPageReqVO pageReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {

View File

@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import cn.idev.excel.annotation.*; import cn.idev.excel.annotation.*;
@@ -24,6 +23,12 @@ public class SpeciesLibraryRespVO {
@ExcelProperty("物种类别名称") @ExcelProperty("物种类别名称")
private String speciesName; private String speciesName;
@Schema(description = "物种类别名称-前半段")
private String speciesName1;
@Schema(description = "物种类别名称-后半段")
private String speciesName2;
@Schema(description = "物种名称", example = "芋艿") @Schema(description = "物种名称", example = "芋艿")
@ExcelProperty("物种名称") @ExcelProperty("物种名称")
private String cultivarName; private String cultivarName;

View File

@@ -1,12 +1,12 @@
package cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary; package cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.farm.framework.util.ImageCollectionUtil;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*; import lombok.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.farm.framework.util.ImageCollectionUtil;
/** /**
* 物种库维护 DO * 物种库维护 DO
@@ -77,6 +77,7 @@ public class SpeciesLibraryDO extends BaseDO {
this.imageList = imageList; this.imageList = imageList;
this.image = ImageCollectionUtil.toDatabaseString(imageList); this.image = ImageCollectionUtil.toDatabaseString(imageList);
} }
/** /**
* 0=启用,1=停用 * 0=启用,1=停用
*/ */
@@ -104,4 +105,10 @@ public class SpeciesLibraryDO extends BaseDO {
private String plotName; private String plotName;
private String tenantId; private String tenantId;
@TableField(exist = false)
private String speciesName1;
@TableField(exist = false)
private String speciesName2;
} }

View File

@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.farm.dal.mysql.sysDict; package cn.iocoder.yudao.module.farm.dal.mysql.sysDict;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -13,9 +14,10 @@ import java.util.List;
* @date: 2025/8/19 17:42 * @date: 2025/8/19 17:42
*/ */
@Mapper @Mapper
public interface SysDictMapper { public interface SysDictMapper extends BaseMapperX<SysDictDO> {
SysDictDO selectDictByMaxField2Code(SysDictReqVO reqVO); SysDictDO selectDictByMaxField2Code(SysDictReqVO reqVO);
SysDictDO getDictByFieldCode(SysDictReqVO reqVO); SysDictDO getDictByFieldCode(SysDictReqVO reqVO);
SysDictDO selectDictByOne(SysDictReqVO reqVO); SysDictDO selectDictByOne(SysDictReqVO reqVO);
@@ -34,6 +36,6 @@ public interface SysDictMapper {
void insertOne(SysDictDO reqVO); void insertOne(SysDictDO reqVO);
void updateById(SysDictDO reqVO); int updateById(SysDictDO reqVO);
} }

View File

@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.DisasterDataReqVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.DisasterDataReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictThreeLvRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.modelcycle.vo.ModelCycleRespVO; import cn.iocoder.yudao.module.farm.controller.admin.modelcycle.vo.ModelCycleRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperation.vo.ModelFarmingOperationRespVO; import cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperation.vo.ModelFarmingOperationRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo.ModelManagementPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo.ModelManagementPageReqVO;
@@ -18,6 +19,7 @@ import cn.iocoder.yudao.module.farm.dal.dataobject.modelfarmingoperationinput.Mo
import cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement.ModelManagementDO; import cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement.ModelManagementDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.modelpestdiseaseweed.ModelPestDiseaseWeedDO; import cn.iocoder.yudao.module.farm.dal.dataobject.modelpestdiseaseweed.ModelPestDiseaseWeedDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.modelweatherdisaster.ModelWeatherDisasterDO; import cn.iocoder.yudao.module.farm.dal.dataobject.modelweatherdisaster.ModelWeatherDisasterDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO;
import cn.iocoder.yudao.module.farm.dal.mysql.modelcycle.ModelCycleMapper; import cn.iocoder.yudao.module.farm.dal.mysql.modelcycle.ModelCycleMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.modelenvironmentindex.ModelEnvironmentIndexMapper; import cn.iocoder.yudao.module.farm.dal.mysql.modelenvironmentindex.ModelEnvironmentIndexMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.modelfarmingoperation.ModelFarmingOperationMapper; import cn.iocoder.yudao.module.farm.dal.mysql.modelfarmingoperation.ModelFarmingOperationMapper;
@@ -27,8 +29,9 @@ import cn.iocoder.yudao.module.farm.dal.mysql.modelpestdiseaseweed.ModelPestDise
import cn.iocoder.yudao.module.farm.dal.mysql.modelweatherdisaster.ModelWeatherDisasterMapper; import cn.iocoder.yudao.module.farm.dal.mysql.modelweatherdisaster.ModelWeatherDisasterMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO; import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO;
import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.enums.CommonConstants;
import cn.iocoder.yudao.module.farm.service.disasterdata.DisasterDataService;
import cn.iocoder.yudao.module.farm.framework.util.ModelManagementConvertUtil; import cn.iocoder.yudao.module.farm.framework.util.ModelManagementConvertUtil;
import cn.iocoder.yudao.module.farm.service.disasterdata.DisasterDataService;
import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService;
import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService; import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@@ -74,6 +77,8 @@ public class ModelManagementServiceImpl implements ModelManagementService {
@Resource @Resource
private DisasterDataService disasterDataService; private DisasterDataService disasterDataService;
@Resource
private SpeciesLibraryService speciesLibraryService;
@Override @Override
public String createModelManagement(ModelManagementSaveReqVO createReqVO) { public String createModelManagement(ModelManagementSaveReqVO createReqVO) {
@@ -85,7 +90,14 @@ public class ModelManagementServiceImpl implements ModelManagementService {
modelManagement.setIsRelease(0); modelManagement.setIsRelease(0);
modelManagement.setType(CommonConstants.MODEL_TYPE_1); modelManagement.setType(CommonConstants.MODEL_TYPE_1);
sysDictService.getDictByField3Code(createReqVO.getSpeciesId()); SpeciesLibraryDO speciesLibrary = speciesLibraryService.getSpeciesLibrary(createReqVO.getSpeciesId());
modelManagement.setSpeciesName(speciesLibrary.getSpeciesName() + "/" + speciesLibrary.getCultivarName());
if (speciesLibrary.getLifeCycle() == 1) {
modelManagement.setCycle("一年生");
} else if (speciesLibrary.getLifeCycle() == 10) {
modelManagement.setCycle("多年生");
}
modelManagement.setSpeciesImage(speciesLibrary.getImage());
// 处理suitablePlantingAreas字段,优先使用集合 // 处理suitablePlantingAreas字段,优先使用集合
if (createReqVO.getSuitablePlantingAreas() != null && !createReqVO.getSuitablePlantingAreas().isEmpty()) { if (createReqVO.getSuitablePlantingAreas() != null && !createReqVO.getSuitablePlantingAreas().isEmpty()) {
modelManagement.setSuitablePlantingAreasList(createReqVO.getSuitablePlantingAreas()); modelManagement.setSuitablePlantingAreasList(createReqVO.getSuitablePlantingAreas());
@@ -191,7 +203,8 @@ public class ModelManagementServiceImpl implements ModelManagementService {
if (existing == null) { if (existing == null) {
return; return;
} }
SysDictThreeLvRespVO dictByField3Code = sysDictService.getDictByField3Code(existing.getSpeciesId());
existing.setSpeciesName(dictByField3Code.getNames());
// 基础字段:仅当请求中非空时才覆盖 // 基础字段:仅当请求中非空时才覆盖
if (updateReqVO.getModelName() != null) existing.setModelName(updateReqVO.getModelName()); if (updateReqVO.getModelName() != null) existing.setModelName(updateReqVO.getModelName());
if (updateReqVO.getSpeciesId() != null) existing.setSpeciesId(updateReqVO.getSpeciesId()); if (updateReqVO.getSpeciesId() != null) existing.setSpeciesId(updateReqVO.getSpeciesId());

View File

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.farm.service.specieslibrary;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesThreeLevelTreeRespVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -67,4 +68,9 @@ public interface SpeciesLibraryService {
*/ */
Map<String, String> getSpeciesLibraryForLifeCycMap(); Map<String, String> getSpeciesLibraryForLifeCycMap();
/**
* 基于 speciesName1 -> speciesName2 -> cultivarName 构建三级树
*/
List<SpeciesThreeLevelTreeRespVO> getSpeciesThreeLevelTree();
} }

View File

@@ -5,18 +5,21 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictThreeLvRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesThreeLevelTreeRespVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO;
import cn.iocoder.yudao.module.farm.dal.mysql.specieslibrary.SpeciesLibraryMapper; import cn.iocoder.yudao.module.farm.dal.mysql.specieslibrary.SpeciesLibraryMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO; import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO;
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictMapper;
import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.enums.CommonConstants;
import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -25,6 +28,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.DICT_TYPE_CODE_3; import static cn.iocoder.yudao.module.farm.enums.CommonConstants.DICT_TYPE_CODE_3;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.SPECIES_LIBRARY_NOT_EXISTS; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.SPECIES_LIBRARY_NOT_EXISTS;
import static cn.iocoder.yudao.module.farm.utils.StrHelperUtil.generate;
/** /**
* 物种库维护 Service 实现类 * 物种库维护 Service 实现类
@@ -38,7 +42,8 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
@Resource @Resource
private SpeciesLibraryMapper speciesLibraryMapper; private SpeciesLibraryMapper speciesLibraryMapper;
@Resource @Resource
private SysDictMapper sysDictMapper; private SysDictService sysDictService;
@Override @Override
public String createSpeciesLibrary(SpeciesLibrarySaveReqVO createReqVO) { public String createSpeciesLibrary(SpeciesLibrarySaveReqVO createReqVO) {
@@ -53,6 +58,9 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
String id = IdUtil.fastUUID(); String id = IdUtil.fastUUID();
speciesLibrary.setId(id); speciesLibrary.setId(id);
speciesLibrary.setTenantId(String.valueOf(user.getTenantId())); speciesLibrary.setTenantId(String.valueOf(user.getTenantId()));
speciesLibrary.setCreateTime(LocalDateTime.now());
SysDictThreeLvRespVO dictByField2Code = sysDictService.getDictByField2Code(speciesLibrary.getCategory());
speciesLibrary.setSpeciesName(dictByField2Code.getNames());
speciesLibraryMapper.insert(speciesLibrary); speciesLibraryMapper.insert(speciesLibrary);
// 同步 // 同步
this.syncCreateDict(id); this.syncCreateDict(id);
@@ -68,7 +76,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
SysDictReqVO query = new SysDictReqVO(); SysDictReqVO query = new SysDictReqVO();
query.setDictTypeCode(DICT_TYPE_CODE_3); query.setDictTypeCode(DICT_TYPE_CODE_3);
query.setField2Code(category); query.setField2Code(category);
SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); SysDictDO obj = sysDictService.selectDictByMaxField2Code(query);
SysDictDO insertObj = new SysDictDO(); SysDictDO insertObj = new SysDictDO();
insertObj.setDictTypeCode(DICT_TYPE_CODE_3); insertObj.setDictTypeCode(DICT_TYPE_CODE_3);
@@ -77,11 +85,11 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
insertObj.setField1Name(obj.getField1Name()); insertObj.setField1Name(obj.getField1Name());
insertObj.setField2Code(category); insertObj.setField2Code(category);
insertObj.setField2Name(obj.getField2Name()); insertObj.setField2Name(obj.getField2Name());
insertObj.setField3Code(String.valueOf(Integer.parseInt(obj.getField3Code()) + 1)); insertObj.setField3Code(generate());
insertObj.setField3Name(cultivarName); insertObj.setField3Name(cultivarName);
insertObj.setStatus(CommonConstants.YES_CODE); insertObj.setStatus(CommonConstants.YES_CODE);
insertObj.setDeleted(false); insertObj.setDeleted(false);
sysDictMapper.insertOne(insertObj); sysDictService.insertOne(insertObj);
} }
@Override @Override
@@ -95,6 +103,8 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
} }
// 更新 // 更新
SpeciesLibraryDO updateObj = BeanUtils.toBean(updateReqVO, SpeciesLibraryDO.class); SpeciesLibraryDO updateObj = BeanUtils.toBean(updateReqVO, SpeciesLibraryDO.class);
SysDictThreeLvRespVO dictByField2Code = sysDictService.getDictByField2Code(updateObj.getCategory());
updateObj.setSpeciesName(dictByField2Code.getNames());
speciesLibraryMapper.updateById(updateObj); speciesLibraryMapper.updateById(updateObj);
// 同步 // 同步
this.syncUpdateDict(updateObj.getId()); this.syncUpdateDict(updateObj.getId());
@@ -108,7 +118,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
SysDictReqVO query = new SysDictReqVO(); SysDictReqVO query = new SysDictReqVO();
query.setDictTypeCode(DICT_TYPE_CODE_3); query.setDictTypeCode(DICT_TYPE_CODE_3);
query.setField2Code(category); query.setField2Code(category);
SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); SysDictDO obj = sysDictService.selectDictByMaxField2Code(query);
SysDictDO updateObj = new SysDictDO(); SysDictDO updateObj = new SysDictDO();
updateObj.setId(Integer.valueOf(id)); updateObj.setId(Integer.valueOf(id));
@@ -118,7 +128,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
updateObj.setField2Name(obj.getField2Name()); updateObj.setField2Name(obj.getField2Name());
updateObj.setField3Code(obj.getField3Code()); updateObj.setField3Code(obj.getField3Code());
updateObj.setField3Name(cultivarName); updateObj.setField3Name(cultivarName);
sysDictMapper.updateById(updateObj); sysDictService.updateById(updateObj);
} }
@Override @Override
@@ -140,12 +150,12 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
SysDictReqVO query = new SysDictReqVO(); SysDictReqVO query = new SysDictReqVO();
query.setDictTypeCode(DICT_TYPE_CODE_3); query.setDictTypeCode(DICT_TYPE_CODE_3);
query.setField2Code(category); query.setField2Code(category);
SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); SysDictDO obj = sysDictService.selectDictByMaxField2Code(query);
SysDictDO updateObj = new SysDictDO(); SysDictDO updateObj = new SysDictDO();
updateObj.setId(obj.getId()); updateObj.setId(obj.getId());
updateObj.setDeleted(false); updateObj.setDeleted(false);
sysDictMapper.updateById(obj); sysDictService.updateById(obj);
} }
@@ -168,6 +178,15 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
// 触发图片集合转换,确保返回的DO对象包含转换后的图片集合 // 触发图片集合转换,确保返回的DO对象包含转换后的图片集合
speciesLibrary.getImageList(); speciesLibrary.getImageList();
} }
if (speciesLibrary != null && speciesLibrary.getSpeciesName() != null) {
String[] parts = speciesLibrary.getSpeciesName().split("/");
if (parts.length > 0) {
speciesLibrary.setSpeciesName1(parts[0]);
}
if (parts.length > 1) {
speciesLibrary.setSpeciesName2(parts[1]);
}
}
return speciesLibrary; return speciesLibrary;
} }
@@ -180,6 +199,15 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
if (speciesLibrary != null) { if (speciesLibrary != null) {
speciesLibrary.getImageList(); speciesLibrary.getImageList();
} }
if (speciesLibrary != null && speciesLibrary.getSpeciesName() != null) {
String[] parts = speciesLibrary.getSpeciesName().split("/");
if (parts.length > 0) {
speciesLibrary.setSpeciesName1(parts[0]);
}
if (parts.length > 1) {
speciesLibrary.setSpeciesName2(parts[1]);
}
}
}); });
} }
return pageResult; return pageResult;
@@ -196,4 +224,43 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
)); ));
} }
@Override
public List<SpeciesThreeLevelTreeRespVO> getSpeciesThreeLevelTree() {
List<SpeciesLibraryDO> list = speciesLibraryMapper.selectList();
Map<String, Map<String, List<SpeciesLibraryDO>>> grouped = list.stream().collect(Collectors.groupingBy(
e -> splitSpeciesName(e.getSpeciesName(), 0),
Collectors.groupingBy(e -> splitSpeciesName(e.getSpeciesName(), 1))
));
return grouped.entrySet().stream().map(level1 -> {
SpeciesThreeLevelTreeRespVO n1 = new SpeciesThreeLevelTreeRespVO();
n1.setName(level1.getKey());
List<SpeciesThreeLevelTreeRespVO> childrenLv2 = level1.getValue().entrySet().stream().map(level2 -> {
SpeciesThreeLevelTreeRespVO n2 = new SpeciesThreeLevelTreeRespVO();
n2.setName(level2.getKey());
List<SpeciesThreeLevelTreeRespVO> childrenLv3 = level2.getValue().stream().map(leaf -> {
SpeciesThreeLevelTreeRespVO n3 = new SpeciesThreeLevelTreeRespVO();
n3.setName(leaf.getCultivarName());
n3.setId(leaf.getId());
return n3;
}).collect(Collectors.toList());
n2.setChildren(childrenLv3);
return n2;
}).collect(Collectors.toList());
n1.setChildren(childrenLv2);
return n1;
}).collect(Collectors.toList());
}
private String splitSpeciesName(String speciesName, int index) {
if (speciesName == null) {
return "";
}
String[] parts = speciesName.split("/");
if (index < parts.length) {
return parts[index];
}
return "";
}
} }

View File

@@ -36,6 +36,8 @@ public interface SysDictService {
SysDictThreeLvRespVO getDictByField3Code(String field3Code); SysDictThreeLvRespVO getDictByField3Code(String field3Code);
SysDictThreeLvRespVO getDictByField2Code(String field2Code);
SysDictDO getDictByFieldCode(SysDictReqVO reqVO); SysDictDO getDictByFieldCode(SysDictReqVO reqVO);
List<InputLibraryRespVO> getInvestGoodsList(); List<InputLibraryRespVO> getInvestGoodsList();
@@ -66,5 +68,9 @@ public interface SysDictService {
void deleteFarmingNameMaintenance(String id); void deleteFarmingNameMaintenance(String id);
SysDictDO selectDictByMaxField2Code(SysDictReqVO reqVO);
void updateById(SysDictDO updateObj);
void insertOne(SysDictDO insertObj);
} }

View File

@@ -26,7 +26,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.*; import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -216,6 +219,18 @@ public class SysDictServiceImpl implements SysDictService {
} }
@Override
public SysDictThreeLvRespVO getDictByField2Code(String field2Code) {
SysDictReqVO query = new SysDictReqVO();
query.setDictTypeCode(CommonConstants.DICT_TYPE_CODE_3);
query.setField2Code(field2Code);
SysDictDO obj = sysDictMapper.getDictByFieldCode(query);
String codes = MessageFormat.format("{0}/{1}", obj.getField1Code(), obj.getField2Code(), obj.getField3Code());
String names = MessageFormat.format("{0}/{1}", obj.getField1Name(), obj.getField2Name(), obj.getField3Name());
return new SysDictThreeLvRespVO(codes, names);
}
@Override @Override
public SysDictDO getDictByFieldCode(SysDictReqVO reqVO) { public SysDictDO getDictByFieldCode(SysDictReqVO reqVO) {
return null; return null;
@@ -438,5 +453,19 @@ public class SysDictServiceImpl implements SysDictService {
} }
@Override
public SysDictDO selectDictByMaxField2Code(SysDictReqVO reqVO) {
return sysDictMapper.selectDictByMaxField2Code(reqVO);
}
@Override
public void updateById(SysDictDO updateObj) {
sysDictMapper.updateById(updateObj);
}
@Override
public void insertOne(SysDictDO insertObj) {
sysDictMapper.insertOne(insertObj);
}
} }