feat (farm): 物种库数据同步
- 物种库-新增 同步至字典表 - 物种库-修改 同步至字典表 - 物种库-删除 同步至字典表
This commit is contained in:
@@ -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 = "字典数据维护-物种库-编辑")
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user