package com.vci.ubcs.omd.feign; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vci.ubcs.omd.entity.BtmType; import com.vci.ubcs.omd.service.IBtmTypeService; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.wrapper.BtmTypeWrapper; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; import java.util.*; /** * Description: 业务类型服务Feign实现类 * * @author LiHang * @date 2023/4/24 */ @NonDS @ApiIgnore @RestController @AllArgsConstructor public class BtmTypeClient implements IBtmTypeClient { private final IBtmTypeService btmTypeService; /** * 参照获取业务类型详情信息 * * @param oid 主键 * @return 业务类型详情信息 */ @Override @GetMapping(GET_DETAIL) public R getDetail(String oid) { return R.data(btmTypeService.getBtmTypeByOid(oid)); } /** * 参照列表查询 * * @param condition 查询条件 * @param query 分页条件 * @param domain 领域值 * @return 查询结果 */ @Override @GetMapping(GET_REF_PAGE) public R> getRefPage(Map condition, Query query, String domain) { Func.requireNotNull(domain,"领域值"); IPage page = btmTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, BtmType.class).lambda().eq(BtmType::getDomain, domain).orderByAsc(BtmType::getId)); IPage pageVO = new Page<>(); BeanUtil.copy(page,pageVO); pageVO.setRecords(BtmTypeWrapper.build().listEntityVO(page.getRecords())); R> r = R.data(pageVO); r.setSuccess(true); return r; } /** * 参照列表查询 * * @param condition 查询条件 * @param domain 领域值 * @return 查询结果 */ @Override @GetMapping(GET_REF) public R> getRef(Map condition, String domain) { Func.requireNotNull(domain,"领域值"); List list = btmTypeService.list(Condition.getQueryWrapper(condition, BtmType.class).lambda().eq(BtmType::getDomain, domain).orderByAsc(BtmType::getId)); return R.data(BtmTypeWrapper.build().listEntityVO(list)); } /** * 根据英文名称批量查询对象 * * @param ids 对象英文名称 但是不能超过1000 * @return 业务对象 */ @Override @GetMapping(GET_BY_IDS) public R> selectByIdCollection(List ids) { Func.requireNotNull(ids,"业务类型英文名称"); List voList = BtmTypeWrapper.build().listEntityVO( Optional.ofNullable(btmTypeService.list( Wrappers.query().lambda().in(BtmType::getId, ids) ) ).orElseGet(ArrayList::new) ); return R.data(voList); } /** * 批量根据主键获取业务类型 * * @param pkBtmTypeCollection 业务类型主键集合 * @return 业务类型列表,如果有不存在的不会返回,全部不存在的则返回空列表 */ @Override @GetMapping(GET_BY_OIDS) public R> listBtmTypeByOidCollection(Collection pkBtmTypeCollection) { Func.requireNotNull(pkBtmTypeCollection,"业务类型主键"); List voList = BtmTypeWrapper.build().listEntityVO( Optional.ofNullable(btmTypeService.list( Wrappers.query().lambda().in(BtmType::getOid, pkBtmTypeCollection) ) ).orElseGet(ArrayList::new) ); return R.data(voList); } }