feat (farm): 物种库数据同步

- 物种库-新增 同步至字典表
- 物种库-修改 同步至字典表
- 物种库-删除 同步至字典表
This commit is contained in:
达富斌
2025-08-24 00:07:48 +08:00
parent af7c5ba690
commit c5f7dd6fe5
5 changed files with 112 additions and 4 deletions

View File

@@ -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<String> createSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO createReqVO) {
return success(speciesLibraryService.createSpeciesLibrary(createReqVO));
String msg = speciesLibraryService.createSpeciesLibrary(createReqVO);
CommonResult<String> result = new CommonResult<>();
result.setCode(GlobalErrorCodeConstants.SUCCESS.getCode());
result.setData("");
result.setMsg(msg);
return result;
}
@Operation(summary = "字典数据维护-物种库-编辑")

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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

View File

@@ -27,6 +27,14 @@
update_time
</sql>
<select id="selectDictByMaxField2Code" resultType="cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO">
SELECT id,field1_code, field1_name, field2_name, field3_code
FROM farm_sys_dict
WHERE dict_type_code = #{dictTypeCode} AND field2_code = #{field2Name}
ORDER BY field3_code DESC
LIMIT 1
</select>
<select id="selectDictByOne"
parameterType="cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO"
resultType="cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO">
@@ -49,6 +57,9 @@
<if test="deleted != null">
AND deleted = #{deleted}
</if>
<if test="field2Code != null">
AND field2_code = #{field2Code}
</if>
</where>
</sql>