diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java index bbbef636..56fc8b94 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java @@ -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.SpeciesLibraryRespVO; 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 jakarta.validation.Valid; -import jakarta.validation.Valid; -import jakarta.validation.Valid; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; @@ -35,7 +34,7 @@ import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService @Tag(name = "管理后台 - 物种库维护") @RestController -@RequestMapping("/farm/species-library") + @RequestMapping("/farm/species-library") @Validated public class SpeciesLibraryController { @@ -44,14 +43,12 @@ public class SpeciesLibraryController { @PostMapping("/create") @Operation(summary = "创建物种库维护") - public CommonResult createSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO createReqVO) { return success(speciesLibraryService.createSpeciesLibrary(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新物种库维护") - public CommonResult updateSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO updateReqVO) { speciesLibraryService.updateSpeciesLibrary(updateReqVO); return success(true); @@ -60,7 +57,6 @@ public class SpeciesLibraryController { @DeleteMapping("/delete") @Operation(summary = "删除物种库维护") @Parameter(name = "id", description = "编号", required = true) - public CommonResult deleteSpeciesLibrary(@RequestParam("id") String id) { speciesLibraryService.deleteSpeciesLibrary(id); return success(true); @@ -69,7 +65,6 @@ public class SpeciesLibraryController { @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除物种库维护") - public CommonResult deleteSpeciesLibraryList(@RequestParam("ids") List ids) { speciesLibraryService.deleteSpeciesLibraryListByIds(ids); return success(true); @@ -78,23 +73,28 @@ public class SpeciesLibraryController { @GetMapping("/get") @Operation(summary = "获得物种库维护") @Parameter(name = "id", description = "编号", required = true, example = "1024") - public CommonResult getSpeciesLibrary(@RequestParam("id") String 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") @Operation(summary = "获得物种库维护分页") - public CommonResult> getSpeciesLibraryPage(@Valid SpeciesLibraryPageReqVO pageReqVO) { PageResult pageResult = speciesLibraryService.getSpeciesLibraryPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, SpeciesLibraryRespVO.class)); + PageResult resp = BeanUtils.toBean(pageResult, SpeciesLibraryRespVO.class); + return success(resp); + } + + @GetMapping("/tree") + @Operation(summary = "物种库三级树(speciesName1->speciesName2->cultivarName)") + public CommonResult> getSpeciesThreeLevelTree() { + return success(speciesLibraryService.getSpeciesThreeLevelTree()); } @GetMapping("/export-excel") @Operation(summary = "导出物种库维护 Excel") - @ApiAccessLog(operateType = EXPORT) public void exportSpeciesLibraryExcel(@Valid SpeciesLibraryPageReqVO pageReqVO, HttpServletResponse response) throws IOException { diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java index dbde9586..e61571b0 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import cn.idev.excel.annotation.*; @@ -24,6 +23,12 @@ public class SpeciesLibraryRespVO { @ExcelProperty("物种类别名称") private String speciesName; + @Schema(description = "物种类别名称-前半段") + private String speciesName1; + + @Schema(description = "物种类别名称-后半段") + private String speciesName2; + @Schema(description = "物种名称", example = "芋艿") @ExcelProperty("物种名称") private String cultivarName; diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java index 3a8c3094..1616c089 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java @@ -1,12 +1,12 @@ 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 java.time.LocalDateTime; 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 @@ -77,6 +77,7 @@ public class SpeciesLibraryDO extends BaseDO { this.imageList = imageList; this.image = ImageCollectionUtil.toDatabaseString(imageList); } + /** * 0=启用,1=停用 */ @@ -104,4 +105,10 @@ public class SpeciesLibraryDO extends BaseDO { private String plotName; private String tenantId; + + @TableField(exist = false) + private String speciesName1; + @TableField(exist = false) + private String speciesName2; + } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/sysDict/SysDictMapper.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/sysDict/SysDictMapper.java index cd120bdd..452fe60c 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/sysDict/SysDictMapper.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/sysDict/SysDictMapper.java @@ -1,5 +1,6 @@ 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.SysDictReqVO; import org.apache.ibatis.annotations.Mapper; @@ -13,9 +14,10 @@ import java.util.List; * @date: 2025/8/19 17:42 */ @Mapper -public interface SysDictMapper { +public interface SysDictMapper extends BaseMapperX { SysDictDO selectDictByMaxField2Code(SysDictReqVO reqVO); + SysDictDO getDictByFieldCode(SysDictReqVO reqVO); SysDictDO selectDictByOne(SysDictReqVO reqVO); @@ -34,6 +36,6 @@ public interface SysDictMapper { void insertOne(SysDictDO reqVO); - void updateById(SysDictDO reqVO); + int updateById(SysDictDO reqVO); } 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 12543a0f..0210d49b 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 @@ -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.security.core.LoginUser; 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.modelfarmingoperation.vo.ModelFarmingOperationRespVO; 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.modelpestdiseaseweed.ModelPestDiseaseWeedDO; 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.modelenvironmentindex.ModelEnvironmentIndexMapper; 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.sysDict.SysDictDO; 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.service.disasterdata.DisasterDataService; +import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService; import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import jakarta.annotation.Resource; @@ -74,6 +77,8 @@ public class ModelManagementServiceImpl implements ModelManagementService { @Resource private DisasterDataService disasterDataService; + @Resource + private SpeciesLibraryService speciesLibraryService; @Override public String createModelManagement(ModelManagementSaveReqVO createReqVO) { @@ -85,7 +90,14 @@ public class ModelManagementServiceImpl implements ModelManagementService { modelManagement.setIsRelease(0); 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字段,优先使用集合 if (createReqVO.getSuitablePlantingAreas() != null && !createReqVO.getSuitablePlantingAreas().isEmpty()) { modelManagement.setSuitablePlantingAreasList(createReqVO.getSuitablePlantingAreas()); @@ -191,7 +203,8 @@ public class ModelManagementServiceImpl implements ModelManagementService { if (existing == null) { return; } - + SysDictThreeLvRespVO dictByField3Code = sysDictService.getDictByField3Code(existing.getSpeciesId()); + existing.setSpeciesName(dictByField3Code.getNames()); // 基础字段:仅当请求中非空时才覆盖 if (updateReqVO.getModelName() != null) existing.setModelName(updateReqVO.getModelName()); if (updateReqVO.getSpeciesId() != null) existing.setSpeciesId(updateReqVO.getSpeciesId()); @@ -243,7 +256,7 @@ public class ModelManagementServiceImpl implements ModelManagementService { @Override public ModelManagementRespVO getModelManagement(String id) { - List dictDOList= sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4); + List dictDOList = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4); Map dictMap = dictDOList.stream().filter(e -> e.getField2Code() != null).collect(Collectors.toMap(SysDictDO::getField2Code, SysDictDO::getField2Name, (v1, v2) -> v1)); DisasterDataReqVO reqVO = new DisasterDataReqVO(); @@ -255,10 +268,10 @@ public class ModelManagementServiceImpl implements ModelManagementService { List commonDisasterDataList = disasterDataService.getDisasterDataList(reqVO); Map commonDisasterDataMap = commonDisasterDataList.stream().collect(Collectors.toMap(DisasterDataDO::getName, e -> e, (v1, v2) -> v1)); - List unit1List= sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_1); // 吨 + List unit1List = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_1); // 吨 Map unit1Map = unit1List.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1)); - List unit2List= sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_2); // 包 + List unit2List = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_2); // 包 Map unit2Map = unit2List.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1)); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java index 091c2dcc..b71f26b8 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.farm.service.specieslibrary; 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.SpeciesLibrarySaveReqVO; +import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesThreeLevelTreeRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; import jakarta.validation.Valid; @@ -67,4 +68,9 @@ public interface SpeciesLibraryService { */ Map getSpeciesLibraryForLifeCycMap(); + /** + * 基于 speciesName1 -> speciesName2 -> cultivarName 构建三级树 + */ + List getSpeciesThreeLevelTree(); + } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java index 768ab7fc..08f55047 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java @@ -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.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.SysDictThreeLvRespVO; 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.SpeciesThreeLevelTreeRespVO; 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.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.service.sysDict.SysDictService; import jakarta.annotation.Resource; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; 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.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.utils.StrHelperUtil.generate; /** * 物种库维护 Service 实现类 @@ -38,7 +42,8 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { @Resource private SpeciesLibraryMapper speciesLibraryMapper; @Resource - private SysDictMapper sysDictMapper; + private SysDictService sysDictService; + @Override public String createSpeciesLibrary(SpeciesLibrarySaveReqVO createReqVO) { @@ -53,6 +58,9 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { String id = IdUtil.fastUUID(); speciesLibrary.setId(id); speciesLibrary.setTenantId(String.valueOf(user.getTenantId())); + speciesLibrary.setCreateTime(LocalDateTime.now()); + SysDictThreeLvRespVO dictByField2Code = sysDictService.getDictByField2Code(speciesLibrary.getCategory()); + speciesLibrary.setSpeciesName(dictByField2Code.getNames()); speciesLibraryMapper.insert(speciesLibrary); // 同步 this.syncCreateDict(id); @@ -68,7 +76,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { SysDictReqVO query = new SysDictReqVO(); query.setDictTypeCode(DICT_TYPE_CODE_3); query.setField2Code(category); - SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); + SysDictDO obj = sysDictService.selectDictByMaxField2Code(query); SysDictDO insertObj = new SysDictDO(); insertObj.setDictTypeCode(DICT_TYPE_CODE_3); @@ -77,11 +85,11 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { insertObj.setField1Name(obj.getField1Name()); insertObj.setField2Code(category); insertObj.setField2Name(obj.getField2Name()); - insertObj.setField3Code(String.valueOf(Integer.parseInt(obj.getField3Code()) + 1)); + insertObj.setField3Code(generate()); insertObj.setField3Name(cultivarName); insertObj.setStatus(CommonConstants.YES_CODE); insertObj.setDeleted(false); - sysDictMapper.insertOne(insertObj); + sysDictService.insertOne(insertObj); } @Override @@ -91,10 +99,12 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { // 名称重复验证 SpeciesLibraryDO obj = speciesLibraryMapper.selectOne("cultivar_name", updateReqVO.getCultivarName()); if (ObjectUtils.isNotEmpty(obj)) { - return ; + return; } // 更新 SpeciesLibraryDO updateObj = BeanUtils.toBean(updateReqVO, SpeciesLibraryDO.class); + SysDictThreeLvRespVO dictByField2Code = sysDictService.getDictByField2Code(updateObj.getCategory()); + updateObj.setSpeciesName(dictByField2Code.getNames()); speciesLibraryMapper.updateById(updateObj); // 同步 this.syncUpdateDict(updateObj.getId()); @@ -108,7 +118,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { SysDictReqVO query = new SysDictReqVO(); query.setDictTypeCode(DICT_TYPE_CODE_3); query.setField2Code(category); - SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); + SysDictDO obj = sysDictService.selectDictByMaxField2Code(query); SysDictDO updateObj = new SysDictDO(); updateObj.setId(Integer.valueOf(id)); @@ -118,7 +128,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { updateObj.setField2Name(obj.getField2Name()); updateObj.setField3Code(obj.getField3Code()); updateObj.setField3Name(cultivarName); - sysDictMapper.updateById(updateObj); + sysDictService.updateById(updateObj); } @Override @@ -140,20 +150,20 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { SysDictReqVO query = new SysDictReqVO(); query.setDictTypeCode(DICT_TYPE_CODE_3); query.setField2Code(category); - SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); + SysDictDO obj = sysDictService.selectDictByMaxField2Code(query); SysDictDO updateObj = new SysDictDO(); updateObj.setId(obj.getId()); updateObj.setDeleted(false); - sysDictMapper.updateById(obj); + sysDictService.updateById(obj); } @Override - public void deleteSpeciesLibraryListByIds(List ids) { + public void deleteSpeciesLibraryListByIds(List ids) { // 删除 speciesLibraryMapper.deleteByIds(ids); - } + } private void validateSpeciesLibraryExists(String id) { if (speciesLibraryMapper.selectById(id) == null) { @@ -168,6 +178,15 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { // 触发图片集合转换,确保返回的DO对象包含转换后的图片集合 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; } @@ -180,6 +199,15 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { if (speciesLibrary != null) { 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; @@ -196,4 +224,43 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { )); } + + @Override + public List getSpeciesThreeLevelTree() { + List list = speciesLibraryMapper.selectList(); + Map>> 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 childrenLv2 = level1.getValue().entrySet().stream().map(level2 -> { + SpeciesThreeLevelTreeRespVO n2 = new SpeciesThreeLevelTreeRespVO(); + n2.setName(level2.getKey()); + List 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 ""; + } } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictService.java index 93684227..a8196d8f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictService.java @@ -36,6 +36,8 @@ public interface SysDictService { SysDictThreeLvRespVO getDictByField3Code(String field3Code); + SysDictThreeLvRespVO getDictByField2Code(String field2Code); + SysDictDO getDictByFieldCode(SysDictReqVO reqVO); List getInvestGoodsList(); @@ -66,5 +68,9 @@ public interface SysDictService { void deleteFarmingNameMaintenance(String id); + SysDictDO selectDictByMaxField2Code(SysDictReqVO reqVO); + void updateById(SysDictDO updateObj); + + void insertOne(SysDictDO insertObj); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java index 75f91d7c..acca397b 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java @@ -26,7 +26,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Service; 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.stream.Collectors; @@ -212,10 +215,22 @@ public class SysDictServiceImpl implements SysDictService { String codes = MessageFormat.format("{0}/{1}/{2}", obj.getField1Code(), obj.getField2Code(), obj.getField3Code()); String names = MessageFormat.format("{0}/{1}/{2}", obj.getField1Name(), obj.getField2Name(), obj.getField3Name()); - return new SysDictThreeLvRespVO(codes,names); + return new SysDictThreeLvRespVO(codes, names); } + @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 public SysDictDO getDictByFieldCode(SysDictReqVO reqVO) { return null; @@ -224,13 +239,13 @@ public class SysDictServiceImpl implements SysDictService { @Override public List getInvestGoodsList() { - List dictDOList= sysDictMapper.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4); + List dictDOList = sysDictMapper.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4); Map dictMap = dictDOList.stream().filter(e -> e.getField2Code() != null).collect(Collectors.toMap(SysDictDO::getField2Name, SysDictDO::getField2Code, (v1, v2) -> v1)); - List unit1List= this.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_1); // 吨 + List unit1List = this.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_1); // 吨 Map unit1Map = unit1List.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1)); - List unit2List= this.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_2); // 包 + List unit2List = this.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_2); // 包 Map unit2Map = unit2List.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1)); @@ -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); + } }