From c5f7dd6fe5daf34fb098de186816e1a26b6e7b34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Sun, 24 Aug 2025 00:07:48 +0800 Subject: [PATCH] =?UTF-8?q?feat=20(farm):=20=E7=89=A9=E7=A7=8D=E5=BA=93?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 物种库-新增 同步至字典表 - 物种库-修改 同步至字典表 - 物种库-删除 同步至字典表 --- .../controller/admin/dict/DictController.java | 9 +- .../admin/dict/vo/sys/SysDictReqVO.java | 1 + .../farm/dal/mysql/sysDict/SysDictMapper.java | 3 + .../SpeciesLibraryServiceImpl.java | 92 ++++++++++++++++++- .../main/resources/mapper/SysDictMapper.xml | 11 +++ 5 files changed, 112 insertions(+), 4 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java index 1c1ec9fe..4eb7ef62 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.farm.controller.admin.dict; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -184,7 +185,13 @@ public class DictController { @Operation(summary = "字典数据维护-物种库-新增") @PostMapping("/species/create") public CommonResult createSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO createReqVO) { - return success(speciesLibraryService.createSpeciesLibrary(createReqVO)); + String msg = speciesLibraryService.createSpeciesLibrary(createReqVO); + + CommonResult result = new CommonResult<>(); + result.setCode(GlobalErrorCodeConstants.SUCCESS.getCode()); + result.setData(""); + result.setMsg(msg); + return result; } @Operation(summary = "字典数据维护-物种库-编辑") diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/vo/sys/SysDictReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/vo/sys/SysDictReqVO.java index 9fc4c62f..13b6d67e 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/vo/sys/SysDictReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/vo/sys/SysDictReqVO.java @@ -17,6 +17,7 @@ public class SysDictReqVO { private Integer id; private String dictTypeCode; private String field1Code; + private String field2Code; private Integer deleted; public SysDictReqVO(String dictTypeCode, String field1Code,Integer deleted) { 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 4db448c6..48e43151 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 @@ -15,6 +15,8 @@ import java.util.List; @Mapper public interface SysDictMapper { + SysDictDO selectDictByMaxField2Code(SysDictReqVO reqVO); + SysDictDO selectDictByOne(SysDictReqVO reqVO); String selectDictByGroup(SysDictReqVO reqVO); @@ -30,4 +32,5 @@ public interface SysDictMapper { void insertOne(SysDictDO reqVO); void updateById(SysDictDO reqVO); + } 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 d53c1491..987f113d 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 @@ -4,11 +4,16 @@ import cn.hutool.core.util.IdUtil; 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.specieslibrary.vo.SpeciesLibraryPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; 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 jakarta.annotation.Resource; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -16,6 +21,7 @@ import java.util.List; 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.DICT_TYPE_CODE_3; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.SPECIES_LIBRARY_NOT_EXISTS; /** @@ -29,27 +35,88 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { @Resource private SpeciesLibraryMapper speciesLibraryMapper; + @Resource + private SysDictMapper sysDictMapper; @Override public String createSpeciesLibrary(SpeciesLibrarySaveReqVO createReqVO) { + SpeciesLibraryDO obj = speciesLibraryMapper.selectOne("cultivar_name", createReqVO.getCultivarName()); + if (ObjectUtils.isNotEmpty(obj)) { + return "物种名称重复"; + } + LoginUser user = getLoginUser(); // 插入 SpeciesLibraryDO speciesLibrary = BeanUtils.toBean(createReqVO, SpeciesLibraryDO.class); - speciesLibrary.setId(IdUtil.fastUUID()); + String id = IdUtil.fastUUID(); + speciesLibrary.setId(id); speciesLibrary.setTenantId(String.valueOf(user.getTenantId())); speciesLibraryMapper.insert(speciesLibrary); - + // 同步 + this.syncCreateDict(id); // 返回 return speciesLibrary.getId(); } + private void syncCreateDict(String id) { + SpeciesLibraryDO aDo = speciesLibraryMapper.selectById(id); + String category = aDo.getCategory(); // 物种二级编号 + String cultivarName = aDo.getCultivarName(); // 物种三级名称 + + SysDictReqVO query = new SysDictReqVO(); + query.setDictTypeCode(DICT_TYPE_CODE_3); + query.setField2Code(category); + SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); + + SysDictDO insertObj = new SysDictDO(); + insertObj.setDictTypeCode(DICT_TYPE_CODE_3); + insertObj.setDictTypeName("物种类别"); + insertObj.setField1Code(obj.getField1Code()); + insertObj.setField1Name(obj.getField1Name()); + insertObj.setField2Code(category); + insertObj.setField2Name(obj.getField2Name()); + insertObj.setField3Code(String.valueOf(Integer.parseInt(obj.getField3Code()) + 1)); + insertObj.setField3Name(cultivarName); + insertObj.setStatus(CommonConstants.YES_CODE); + insertObj.setDeleted(true); + sysDictMapper.insertOne(insertObj); + } + @Override public void updateSpeciesLibrary(SpeciesLibrarySaveReqVO updateReqVO) { + // 名称重复验证 + SpeciesLibraryDO obj = speciesLibraryMapper.selectOne("cultivar_name", updateReqVO.getCultivarName()); + if (ObjectUtils.isNotEmpty(obj)) { + return ; + } // 校验存在 validateSpeciesLibraryExists(updateReqVO.getId()); // 更新 SpeciesLibraryDO updateObj = BeanUtils.toBean(updateReqVO, SpeciesLibraryDO.class); speciesLibraryMapper.updateById(updateObj); + // 同步 + this.syncUpdateDict(updateObj.getId()); + } + + private void syncUpdateDict(String id) { + SpeciesLibraryDO aDo = speciesLibraryMapper.selectById(id); + String category = aDo.getCategory(); // 物种二级编号 + String cultivarName = aDo.getCultivarName(); // 物种三级名称 + + SysDictReqVO query = new SysDictReqVO(); + query.setDictTypeCode(DICT_TYPE_CODE_3); + query.setField2Code(category); + SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); + + SysDictDO updateObj = new SysDictDO(); + updateObj.setId(Integer.valueOf(id)); + updateObj.setField1Code(obj.getField1Code()); + updateObj.setField1Name(obj.getField1Name()); + updateObj.setField2Code(category); + updateObj.setField2Name(obj.getField2Name()); + updateObj.setField3Code(obj.getField3Code()); + updateObj.setField3Name(cultivarName); + sysDictMapper.updateById(updateObj); } @Override @@ -58,6 +125,25 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { validateSpeciesLibraryExists(id); // 删除 speciesLibraryMapper.deleteById(id); + // 同步 + this.syncDeleteDict(id); + } + + private void syncDeleteDict(String id) { + + SpeciesLibraryDO aDo = speciesLibraryMapper.selectById(id); + String category = aDo.getCategory(); // 物种二级编号 + + SysDictReqVO query = new SysDictReqVO(); + query.setDictTypeCode(DICT_TYPE_CODE_3); + query.setField2Code(category); + SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query); + + SysDictDO updateObj = new SysDictDO(); + updateObj.setId(obj.getId()); + updateObj.setDeleted(false); + sysDictMapper.updateById(obj); + } @Override @@ -66,7 +152,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { speciesLibraryMapper.deleteByIds(ids); } -private void validateSpeciesLibraryExists(String id) { + private void validateSpeciesLibraryExists(String id) { if (speciesLibraryMapper.selectById(id) == null) { throw exception(SPECIES_LIBRARY_NOT_EXISTS); } diff --git a/yudao-module-farm/src/main/resources/mapper/SysDictMapper.xml b/yudao-module-farm/src/main/resources/mapper/SysDictMapper.xml index 8d13bc8c..8d7eac18 100644 --- a/yudao-module-farm/src/main/resources/mapper/SysDictMapper.xml +++ b/yudao-module-farm/src/main/resources/mapper/SysDictMapper.xml @@ -27,6 +27,14 @@ update_time + +