feat (farm): 投入品库,灾害库同步
- 投入品-新增,修改,删除 同步至字典表 - 灾害库-新增,修改,删除 同步至字典表
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
package cn.iocoder.yudao.module.farm.controller.admin.dict.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:
|
||||||
|
* @author: binda
|
||||||
|
* @date: 2025/8/25 11:00
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DisasterDataReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "ID")
|
||||||
|
private String id;
|
||||||
|
@Schema(description = "灾害类型 1:一般灾害; 2:气象灾害")
|
||||||
|
private Integer type;
|
||||||
|
@Schema(description = "灾害名称")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -17,8 +17,11 @@ public class SysDictReqVO {
|
|||||||
private Integer id;
|
private Integer id;
|
||||||
private String dictTypeCode;
|
private String dictTypeCode;
|
||||||
private String field1Code;
|
private String field1Code;
|
||||||
|
private String field1Name;
|
||||||
private String field2Code;
|
private String field2Code;
|
||||||
|
private String field2Name;
|
||||||
private String field3Code;
|
private String field3Code;
|
||||||
|
private String field3Name;
|
||||||
private Integer deleted;
|
private Integer deleted;
|
||||||
|
|
||||||
public SysDictReqVO(String dictTypeCode, String field1Code,Integer deleted) {
|
public SysDictReqVO(String dictTypeCode, String field1Code,Integer deleted) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.farm.dal.mysql.disasterdata;
|
package cn.iocoder.yudao.module.farm.dal.mysql.disasterdata;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.DisasterDataReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataPageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataPageReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO;
|
import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
@@ -19,7 +20,6 @@ public interface DisasterDataMapper {
|
|||||||
|
|
||||||
long selectDisasterDataCount(@Param("req") DisasterDataPageReqVO reqVO);
|
long selectDisasterDataCount(@Param("req") DisasterDataPageReqVO reqVO);
|
||||||
|
|
||||||
|
|
||||||
DisasterDataDO selectById(String id);
|
DisasterDataDO selectById(String id);
|
||||||
|
|
||||||
void deleteByIds(List<String> ids);
|
void deleteByIds(List<String> ids);
|
||||||
@@ -29,4 +29,6 @@ public interface DisasterDataMapper {
|
|||||||
void updateById(DisasterDataDO updateObj);
|
void updateById(DisasterDataDO updateObj);
|
||||||
|
|
||||||
void insert(DisasterDataDO disasterData);
|
void insert(DisasterDataDO disasterData);
|
||||||
|
|
||||||
|
DisasterDataDO selectOne(DisasterDataReqVO reqVO);
|
||||||
}
|
}
|
||||||
@@ -30,6 +30,8 @@ public interface SysDictMapper {
|
|||||||
|
|
||||||
List<SysDictDO> groupByTypeCode();
|
List<SysDictDO> groupByTypeCode();
|
||||||
|
|
||||||
|
List<SysDictDO> groupByFieldCode(@Param("dictTypeCode") String dictTypeCode);
|
||||||
|
|
||||||
void insertOne(SysDictDO reqVO);
|
void insertOne(SysDictDO reqVO);
|
||||||
|
|
||||||
void updateById(SysDictDO reqVO);
|
void updateById(SysDictDO reqVO);
|
||||||
|
|||||||
@@ -41,6 +41,14 @@ public class CommonConstants {
|
|||||||
public final static String DICT_TYPE_CODE_1 = "common_disaster"; // 一般灾害
|
public final static String DICT_TYPE_CODE_1 = "common_disaster"; // 一般灾害
|
||||||
public final static String DICT_TYPE_CODE_2 = "weather_disaster"; // 气象灾害
|
public final static String DICT_TYPE_CODE_2 = "weather_disaster"; // 气象灾害
|
||||||
public final static String DICT_TYPE_CODE_3 = "species_classify_library"; // 物种类别
|
public final static String DICT_TYPE_CODE_3 = "species_classify_library"; // 物种类别
|
||||||
|
public final static String DICT_TYPE_CODE_4 = "invest_goods_type"; // 投入品
|
||||||
|
public final static String DICT_TYPE_CODE_4_1 = "invest_goods_unit_1"; // 投入品单位-1
|
||||||
|
public final static String DICT_TYPE_CODE_4_2 = "invest_goods_unit_2"; // 投入品单位-2
|
||||||
|
public final static String DICT_TYPE_CODE_5 = "farming_type"; // 农事类型
|
||||||
|
public final static String DICT_TYPE_CODE_6 = "farming_name"; // 农事名称
|
||||||
|
public final static String DICT_TYPE_CODE_7 = "drug_type"; // 药物类型
|
||||||
|
|
||||||
|
public final static String COMMON_DISASTER = "1"; // 一般灾害
|
||||||
|
public final static String WEATHER_DISASTER = "2"; // 气象灾害
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.farm.service.disasterdata;
|
|||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
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.module.farm.controller.admin.dict.vo.DisasterDataReqVO;
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataPageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataPageReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataSaveReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO;
|
import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO;
|
||||||
@@ -11,7 +13,9 @@ 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.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.framework.util.ImageCollectionUtil;
|
import cn.iocoder.yudao.module.farm.framework.util.ImageCollectionUtil;
|
||||||
|
import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
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;
|
||||||
|
|
||||||
@@ -22,6 +26,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
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.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||||
|
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.*;
|
||||||
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.DISASTER_DATA_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.DISASTER_DATA_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,6 +46,13 @@ public class DisasterDataServiceImpl implements DisasterDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createDisasterData(DisasterDataSaveReqVO createReqVO) {
|
public String createDisasterData(DisasterDataSaveReqVO createReqVO) {
|
||||||
|
// 名称查重
|
||||||
|
DisasterDataReqVO reqVO = new DisasterDataReqVO();
|
||||||
|
reqVO.setName(createReqVO.getName());
|
||||||
|
DisasterDataDO obj = disasterDataMapper.selectOne(reqVO);
|
||||||
|
if (ObjectUtils.isNotEmpty(obj)) {
|
||||||
|
return "灾害名称重复";
|
||||||
|
}
|
||||||
// 插入
|
// 插入
|
||||||
DisasterDataDO disasterData = BeanUtils.toBean(createReqVO, DisasterDataDO.class);
|
DisasterDataDO disasterData = BeanUtils.toBean(createReqVO, DisasterDataDO.class);
|
||||||
// 将图片集合转换为数据库存储的字符串,仅当前端传了列表时进行转换
|
// 将图片集合转换为数据库存储的字符串,仅当前端传了列表时进行转换
|
||||||
@@ -52,15 +64,59 @@ public class DisasterDataServiceImpl implements DisasterDataService {
|
|||||||
disasterData.setCreator(getLoginUser().getId().toString());
|
disasterData.setCreator(getLoginUser().getId().toString());
|
||||||
disasterData.setTenantId(getLoginUser().getTenantId().toString());
|
disasterData.setTenantId(getLoginUser().getTenantId().toString());
|
||||||
disasterDataMapper.insert(disasterData);
|
disasterDataMapper.insert(disasterData);
|
||||||
|
// 同步
|
||||||
|
this.syncCreateDict(disasterData.getId());
|
||||||
// 返回
|
// 返回
|
||||||
return disasterData.getId();
|
return disasterData.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void syncCreateDict(String id) {
|
||||||
|
|
||||||
|
DisasterDataReqVO reqVO = new DisasterDataReqVO();
|
||||||
|
reqVO.setId(id);
|
||||||
|
DisasterDataDO obj = disasterDataMapper.selectOne(reqVO);
|
||||||
|
Integer type = obj.getType(); // 灾害类型
|
||||||
|
String name = obj.getName(); // 灾害名称
|
||||||
|
|
||||||
|
SysDictDO insertObj = new SysDictDO();
|
||||||
|
if (type == 1) {
|
||||||
|
// 一般灾害 父类编号
|
||||||
|
String category = obj.getCategory();
|
||||||
|
// 一般灾害
|
||||||
|
List<SysDictDO> list = sysDictMapper.groupByFieldCode(DICT_TYPE_CODE_1);
|
||||||
|
Map<String, String> parentMap = list.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1));
|
||||||
|
|
||||||
|
insertObj.setDictTypeCode(DICT_TYPE_CODE_1);
|
||||||
|
insertObj.setDictTypeName("一般灾害");
|
||||||
|
insertObj.setField1Code(category);
|
||||||
|
insertObj.setField1Name(parentMap.get(category));
|
||||||
|
insertObj.setField2Code(StrHelperUtil.generate());
|
||||||
|
insertObj.setField2Name(name);
|
||||||
|
} else {
|
||||||
|
// 气象灾害
|
||||||
|
insertObj.setDictTypeCode(DICT_TYPE_CODE_2);
|
||||||
|
insertObj.setDictTypeName("气象灾害");
|
||||||
|
insertObj.setField1Code(StrHelperUtil.generate());
|
||||||
|
insertObj.setField1Name(name);
|
||||||
|
|
||||||
|
}
|
||||||
|
insertObj.setStatus(CommonConstants.YES_CODE);
|
||||||
|
insertObj.setDeleted(true);
|
||||||
|
sysDictMapper.insertOne(insertObj);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateDisasterData(DisasterDataSaveReqVO updateReqVO) {
|
public void updateDisasterData(DisasterDataSaveReqVO updateReqVO) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateDisasterDataExists(updateReqVO.getId());
|
validateDisasterDataExists(updateReqVO.getId());
|
||||||
|
// 名称查重
|
||||||
|
DisasterDataReqVO reqVO = new DisasterDataReqVO();
|
||||||
|
reqVO.setName(updateReqVO.getName());
|
||||||
|
DisasterDataDO obj = disasterDataMapper.selectOne(reqVO);
|
||||||
|
if (ObjectUtils.isNotEmpty(obj)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 更新
|
// 更新
|
||||||
DisasterDataDO updateObj = BeanUtils.toBean(updateReqVO, DisasterDataDO.class);
|
DisasterDataDO updateObj = BeanUtils.toBean(updateReqVO, DisasterDataDO.class);
|
||||||
// 将图片集合转换为数据库存储的字符串,仅当前端传了列表时进行转换
|
// 将图片集合转换为数据库存储的字符串,仅当前端传了列表时进行转换
|
||||||
@@ -70,8 +126,55 @@ public class DisasterDataServiceImpl implements DisasterDataService {
|
|||||||
updateObj.setUpdater(getLoginUser().getId().toString());
|
updateObj.setUpdater(getLoginUser().getId().toString());
|
||||||
updateObj.setUpdateTime(LocalDateTime.now());
|
updateObj.setUpdateTime(LocalDateTime.now());
|
||||||
disasterDataMapper.updateById(updateObj);
|
disasterDataMapper.updateById(updateObj);
|
||||||
|
// 同步
|
||||||
|
this.syncUpdateDict(updateObj.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void syncUpdateDict(String id) {
|
||||||
|
|
||||||
|
DisasterDataReqVO reqVO = new DisasterDataReqVO();
|
||||||
|
reqVO.setId(id);
|
||||||
|
DisasterDataDO obj = disasterDataMapper.selectOne(reqVO);
|
||||||
|
Integer type = obj.getType(); // 灾害类型
|
||||||
|
String name = obj.getName(); // 灾害名称
|
||||||
|
|
||||||
|
|
||||||
|
if (type == 1) {
|
||||||
|
// 一般灾害
|
||||||
|
List<SysDictDO> list = sysDictMapper.groupByFieldCode(DICT_TYPE_CODE_1);
|
||||||
|
Map<String, String> parentMap = list.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1));
|
||||||
|
|
||||||
|
SysDictReqVO query = new SysDictReqVO();
|
||||||
|
query.setDictTypeCode(DICT_TYPE_CODE_1);
|
||||||
|
query.setField2Name(name);
|
||||||
|
SysDictDO aDo = sysDictMapper.getDictByField3Code(query);
|
||||||
|
|
||||||
|
// 一般灾害 父类编号
|
||||||
|
String category = obj.getCategory();
|
||||||
|
SysDictDO updateObj = new SysDictDO();
|
||||||
|
updateObj.setId(aDo.getId());
|
||||||
|
updateObj.setField1Code(category);
|
||||||
|
updateObj.setField1Name(parentMap.get(category));
|
||||||
|
updateObj.setField2Code(aDo.getField2Code());
|
||||||
|
updateObj.setField2Name(name);
|
||||||
|
sysDictMapper.updateById(updateObj);
|
||||||
|
} else {
|
||||||
|
// 气象灾害
|
||||||
|
SysDictReqVO query = new SysDictReqVO();
|
||||||
|
query.setDictTypeCode(DICT_TYPE_CODE_2);
|
||||||
|
query.setField1Name(name);
|
||||||
|
SysDictDO aDo = sysDictMapper.getDictByField3Code(query);
|
||||||
|
|
||||||
|
SysDictDO updateObj = new SysDictDO();
|
||||||
|
updateObj.setId(aDo.getId());
|
||||||
|
updateObj.setField1Code(aDo.getField1Code());
|
||||||
|
updateObj.setField1Name(name);
|
||||||
|
sysDictMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteDisasterData(String id) {
|
public void deleteDisasterData(String id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
@@ -81,6 +184,24 @@ public class DisasterDataServiceImpl implements DisasterDataService {
|
|||||||
aDo.setId(id);
|
aDo.setId(id);
|
||||||
aDo.setDeleted(true);
|
aDo.setDeleted(true);
|
||||||
disasterDataMapper.updateById(aDo);
|
disasterDataMapper.updateById(aDo);
|
||||||
|
// 同步
|
||||||
|
this.syncDeleteDict(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void syncDeleteDict(String id) {
|
||||||
|
DisasterDataReqVO reqVO = new DisasterDataReqVO();
|
||||||
|
reqVO.setId(id);
|
||||||
|
DisasterDataDO aDo = disasterDataMapper.selectOne(reqVO);
|
||||||
|
String name = aDo.getName();
|
||||||
|
|
||||||
|
SysDictReqVO query = new SysDictReqVO();
|
||||||
|
query.setField2Name(name);
|
||||||
|
SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query);
|
||||||
|
|
||||||
|
SysDictDO updateObj = new SysDictDO();
|
||||||
|
updateObj.setId(obj.getId());
|
||||||
|
updateObj.setDeleted(false);
|
||||||
|
sysDictMapper.updateById(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -108,7 +229,7 @@ public class DisasterDataServiceImpl implements DisasterDataService {
|
|||||||
@Override
|
@Override
|
||||||
public PageResult<DisasterDataDO> getDisasterDataPage(DisasterDataPageReqVO reqVO) {
|
public PageResult<DisasterDataDO> getDisasterDataPage(DisasterDataPageReqVO reqVO) {
|
||||||
|
|
||||||
List<SysDictDO> dictList = sysDictMapper.getByTypeCode(CommonConstants.DICT_TYPE_CODE_1);
|
List<SysDictDO> dictList = sysDictMapper.getByTypeCode(DICT_TYPE_CODE_1);
|
||||||
Map<String, String> dictMap = dictList.stream()
|
Map<String, String> dictMap = dictList.stream()
|
||||||
.collect(Collectors.toMap(
|
.collect(Collectors.toMap(
|
||||||
SysDictDO::getField1Code, // key: field1Code
|
SysDictDO::getField1Code, // key: field1Code
|
||||||
|
|||||||
@@ -1,28 +1,33 @@
|
|||||||
package cn.iocoder.yudao.module.farm.service.inputlibrary;
|
package cn.iocoder.yudao.module.farm.service.inputlibrary;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.inputlibrary.vo.InputLibraryPageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.inputlibrary.vo.InputLibraryPageReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.inputlibrary.vo.InputLibrarySaveReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.inputlibrary.vo.InputLibrarySaveReqVO;
|
||||||
|
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.utils.StrHelperUtil;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputLibraryDO;
|
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputLibraryDO;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
||||||
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.dal.mysql.inputlibrary.InputLibraryMapper;
|
import cn.iocoder.yudao.module.farm.dal.mysql.inputlibrary.InputLibraryMapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList;
|
|
||||||
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_4;
|
||||||
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.INPUT_LIBRARY_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.INPUT_LIBRARY_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,44 +41,124 @@ public class InputLibraryServiceImpl implements InputLibraryService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private InputLibraryMapper inputLibraryMapper;
|
private InputLibraryMapper inputLibraryMapper;
|
||||||
|
@Resource
|
||||||
|
private SysDictMapper sysDictMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createInputLibrary(InputLibrarySaveReqVO createReqVO) {
|
public String createInputLibrary(InputLibrarySaveReqVO createReqVO) {
|
||||||
|
// 投入品名称查重
|
||||||
|
InputLibraryDO aDo = inputLibraryMapper.selectOne("asset_name", createReqVO.getAssetName());
|
||||||
|
if (ObjectUtils.isNotEmpty(aDo)) {
|
||||||
|
return "物种名称重复";
|
||||||
|
}
|
||||||
LoginUser user = getLoginUser();
|
LoginUser user = getLoginUser();
|
||||||
// 插入
|
// 插入
|
||||||
|
String id = IdUtil.fastUUID();
|
||||||
InputLibraryDO inputLibrary = BeanUtils.toBean(createReqVO, InputLibraryDO.class);
|
InputLibraryDO inputLibrary = BeanUtils.toBean(createReqVO, InputLibraryDO.class);
|
||||||
inputLibrary.setId(IdUtil.fastUUID());
|
inputLibrary.setId(id);
|
||||||
inputLibrary.setTenantId(String.valueOf(user.getTenantId()));
|
inputLibrary.setTenantId(String.valueOf(user.getTenantId()));
|
||||||
inputLibraryMapper.insert(inputLibrary);
|
inputLibraryMapper.insert(inputLibrary);
|
||||||
|
// 同步
|
||||||
|
this.syncCreateDict(id);
|
||||||
// 返回
|
// 返回
|
||||||
return inputLibrary.getId();
|
return inputLibrary.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void syncCreateDict(String id) {
|
||||||
|
List<SysDictDO> list = sysDictMapper.groupByFieldCode(DICT_TYPE_CODE_4);
|
||||||
|
Map<String, String> parentMap = list.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1));
|
||||||
|
|
||||||
|
InputLibraryDO aDo = inputLibraryMapper.selectById(id);
|
||||||
|
String assetType = aDo.getAssetType();// 父类编号
|
||||||
|
String assetName = aDo.getAssetName();// 子类名称
|
||||||
|
|
||||||
|
SysDictDO insertObj = new SysDictDO();
|
||||||
|
insertObj.setDictTypeCode(DICT_TYPE_CODE_4);
|
||||||
|
insertObj.setDictTypeName("投入品");
|
||||||
|
insertObj.setField1Code(assetType);
|
||||||
|
insertObj.setField1Name(parentMap.get(assetType));
|
||||||
|
insertObj.setField2Code(StrHelperUtil.generate());
|
||||||
|
insertObj.setField2Name(assetName);
|
||||||
|
insertObj.setStatus(CommonConstants.YES_CODE);
|
||||||
|
insertObj.setDeleted(true);
|
||||||
|
sysDictMapper.insertOne(insertObj);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateInputLibrary(InputLibrarySaveReqVO updateReqVO) {
|
public void updateInputLibrary(InputLibrarySaveReqVO updateReqVO) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateInputLibraryExists(updateReqVO.getId());
|
validateInputLibraryExists(updateReqVO.getId());
|
||||||
|
// 投入品名称查重
|
||||||
|
InputLibraryDO aDo = inputLibraryMapper.selectOne("asset_name", updateReqVO.getAssetName());
|
||||||
|
if (ObjectUtils.isNotEmpty(aDo)) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
// 更新
|
// 更新
|
||||||
InputLibraryDO updateObj = BeanUtils.toBean(updateReqVO, InputLibraryDO.class);
|
InputLibraryDO updateObj = BeanUtils.toBean(updateReqVO, InputLibraryDO.class);
|
||||||
inputLibraryMapper.updateById(updateObj);
|
inputLibraryMapper.updateById(updateObj);
|
||||||
|
// 同步
|
||||||
|
this.syncUpdateDict(updateObj.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void syncUpdateDict(String id) {
|
||||||
|
|
||||||
|
InputLibraryDO aDo = inputLibraryMapper.selectById(id);
|
||||||
|
String assetType = aDo.getAssetType();// 父类编号
|
||||||
|
String assetName = aDo.getAssetName();// 子类名称
|
||||||
|
|
||||||
|
List<SysDictDO> list = sysDictMapper.groupByFieldCode(DICT_TYPE_CODE_4);
|
||||||
|
Map<String, String> parentMap = list.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1));
|
||||||
|
|
||||||
|
SysDictReqVO query = new SysDictReqVO();
|
||||||
|
query.setDictTypeCode(DICT_TYPE_CODE_4);
|
||||||
|
query.setField2Name(assetName);
|
||||||
|
SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query);
|
||||||
|
|
||||||
|
SysDictDO updateObj = new SysDictDO();
|
||||||
|
updateObj.setId(Integer.valueOf(id));
|
||||||
|
updateObj.setField1Code(assetType);
|
||||||
|
updateObj.setField1Name(parentMap.get(assetType));
|
||||||
|
updateObj.setField2Code(obj.getField2Code());
|
||||||
|
updateObj.setField2Name(assetName);
|
||||||
|
sysDictMapper.updateById(updateObj);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void deleteInputLibrary(String id) {
|
public void deleteInputLibrary(String id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateInputLibraryExists(id);
|
validateInputLibraryExists(id);
|
||||||
// 删除
|
// 删除
|
||||||
inputLibraryMapper.deleteById(id);
|
inputLibraryMapper.deleteById(id);
|
||||||
|
// 同步
|
||||||
|
this.syncDeleteDict(id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void syncDeleteDict(String id) {
|
||||||
|
|
||||||
|
InputLibraryDO aDo = inputLibraryMapper.selectById(id);
|
||||||
|
String assetName = aDo.getAssetName();// 子类名称
|
||||||
|
|
||||||
|
SysDictReqVO query = new SysDictReqVO();
|
||||||
|
query.setDictTypeCode(DICT_TYPE_CODE_3);
|
||||||
|
query.setField2Name(assetName);
|
||||||
|
SysDictDO obj = sysDictMapper.selectDictByMaxField2Code(query);
|
||||||
|
|
||||||
|
SysDictDO updateObj = new SysDictDO();
|
||||||
|
updateObj.setId(obj.getId());
|
||||||
|
updateObj.setDeleted(false);
|
||||||
|
sysDictMapper.updateById(obj);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteInputLibraryListByIds(List<String> ids) {
|
public void deleteInputLibraryListByIds(List<String> ids) {
|
||||||
// 删除
|
// 删除
|
||||||
inputLibraryMapper.deleteByIds(ids);
|
inputLibraryMapper.deleteByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateInputLibraryExists(String id) {
|
private void validateInputLibraryExists(String id) {
|
||||||
if (inputLibraryMapper.selectById(id) == null) {
|
if (inputLibraryMapper.selectById(id) == null) {
|
||||||
throw exception(INPUT_LIBRARY_NOT_EXISTS);
|
throw exception(INPUT_LIBRARY_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,13 +86,13 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateSpeciesLibrary(SpeciesLibrarySaveReqVO updateReqVO) {
|
public void updateSpeciesLibrary(SpeciesLibrarySaveReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateSpeciesLibraryExists(updateReqVO.getId());
|
||||||
// 名称重复验证
|
// 名称重复验证
|
||||||
SpeciesLibraryDO obj = speciesLibraryMapper.selectOne("cultivar_name", updateReqVO.getCultivarName());
|
SpeciesLibraryDO obj = speciesLibraryMapper.selectOne("cultivar_name", updateReqVO.getCultivarName());
|
||||||
if (ObjectUtils.isNotEmpty(obj)) {
|
if (ObjectUtils.isNotEmpty(obj)) {
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
// 校验存在
|
|
||||||
validateSpeciesLibraryExists(updateReqVO.getId());
|
|
||||||
// 更新
|
// 更新
|
||||||
SpeciesLibraryDO updateObj = BeanUtils.toBean(updateReqVO, SpeciesLibraryDO.class);
|
SpeciesLibraryDO updateObj = BeanUtils.toBean(updateReqVO, SpeciesLibraryDO.class);
|
||||||
speciesLibraryMapper.updateById(updateObj);
|
speciesLibraryMapper.updateById(updateObj);
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
SELECT id,field1_code, field1_name, field2_name, field3_code
|
SELECT id,field1_code, field1_name, field2_name, field3_code
|
||||||
FROM farm_sys_dict
|
FROM farm_sys_dict
|
||||||
WHERE dict_type_code = #{dictTypeCode} AND field2_code = #{field2Code}
|
<include refid="where_3"/>
|
||||||
ORDER BY field3_code DESC
|
ORDER BY field3_code DESC
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
|
|
||||||
@@ -45,6 +45,12 @@
|
|||||||
|
|
||||||
SELECT field1_code, field1_name, field2_name, field2_code, field3_code, field3_name
|
SELECT field1_code, field1_name, field2_name, field2_code, field3_code, field3_name
|
||||||
FROM farm_sys_dict
|
FROM farm_sys_dict
|
||||||
|
<include refid="where_3"/>
|
||||||
|
DESC LIMIT 1
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<sql id="where_3">
|
||||||
<where>
|
<where>
|
||||||
deleted = 0
|
deleted = 0
|
||||||
<if test="dictTypeCode != null and dictTypeCode != ''">
|
<if test="dictTypeCode != null and dictTypeCode != ''">
|
||||||
@@ -56,13 +62,14 @@
|
|||||||
<if test="field2Code != null and field2Code != ''">
|
<if test="field2Code != null and field2Code != ''">
|
||||||
AND field2_code = #{field2Code}
|
AND field2_code = #{field2Code}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="field2Name != null and field2Name != ''">
|
||||||
|
AND field2_name = #{field2Name}
|
||||||
|
</if>
|
||||||
<if test="field3Code != null and field3Code != ''">
|
<if test="field3Code != null and field3Code != ''">
|
||||||
AND field3_code = #{field3Code}
|
AND field3_code = #{field3Code}
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
DESC LIMIT 1
|
</sql>
|
||||||
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select id="selectDictByOne"
|
<select id="selectDictByOne"
|
||||||
parameterType="cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO"
|
parameterType="cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO"
|
||||||
@@ -184,6 +191,20 @@
|
|||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="groupByFieldCode" resultType="cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO">
|
||||||
|
|
||||||
|
SELECT field1_code,field1_name
|
||||||
|
FROM farm_sys_dict
|
||||||
|
<where>
|
||||||
|
deleted = 0
|
||||||
|
<if test="dictTypeCode != null and dictTypeCode != ''">
|
||||||
|
AND dict_type_code = #{dictTypeCode}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
GROUP BY field1_code,field1_name
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertOne" parameterType="cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO">
|
<insert id="insertOne" parameterType="cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO">
|
||||||
INSERT INTO farm_sys_dict
|
INSERT INTO farm_sys_dict
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
|||||||
@@ -195,4 +195,18 @@
|
|||||||
|
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<select id="selectOne"
|
||||||
|
parameterType="cn.iocoder.yudao.module.farm.controller.admin.dict.vo.DisasterDataReqVO"
|
||||||
|
resultType="cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO">
|
||||||
|
|
||||||
|
SELECT <include refid="all_fields"/> FROM farm_disaster_data
|
||||||
|
<where>
|
||||||
|
<if test="id != null and id != ''">AND id = #{id}</if>
|
||||||
|
<if test="type != null and type != ''">AND type = #{type}</if>
|
||||||
|
<if test="name != null and name != ''">AND name = #{name}</if>
|
||||||
|
</where>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user