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.LinkType; import com.vci.ubcs.omd.service.ILinkTypeService; import com.vci.ubcs.omd.vo.LinkTypeVO; import com.vci.ubcs.omd.wrapper.LinkTypeWrapper; import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject; import com.vci.ubcs.starter.web.pagemodel.PageHelper; import com.vci.ubcs.starter.web.util.VciBaseUtil; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springframework.cglib.beans.BeanMap; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; import java.util.*; /** * Description: 链接类型Feign实现类 * * @author LiHang * @date 2023/6/13 */ @ApiIgnore() @RestController @AllArgsConstructor public class LinkTypeClient implements ILinkTypeClient{ private final ILinkTypeService linkTypeService; private final String DOMAIN = "domain"; /** * 获取链接类型详情信息 * * @param oid 主键 * @return 链接类型详情信息 */ @Override public R getDetail(String oid) { LinkTypeVO vo = linkTypeService.getLinkTypeByOid(oid); return R.data(vo); } /** * 参照列表查询 * * @param baseQueryObject 查询条件对象 * @return 查询结果 */ @Override public R> getRefPage(BaseQueryObject baseQueryObject) { Map conditionMap = baseQueryObject.getConditionMap(); if (conditionMap == null){ conditionMap = new HashMap<>(16); } if (!conditionMap.containsKey(DOMAIN)){ return R.fail("领域值不能为空"); } PageHelper pageHelper = baseQueryObject.getPageHelper(); if (pageHelper == null){ pageHelper = new PageHelper(-1); } String domainValue = conditionMap.get(DOMAIN); VciBaseUtil.alertNotNull(domainValue,"领域值"); conditionMap.remove(DOMAIN); LinkType queryObj = new LinkType(); BeanMap.create(queryObj).putAll(conditionMap); Query query = new Query(); query.setSize(pageHelper.getLimit()); query.setCurrent(pageHelper.getPage()); IPage page = linkTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(queryObj).lambda().eq(LinkType::getBizDomain, domainValue).orderByAsc(LinkType::getId)); Page pageVO = new Page<>(); BeanUtil.copy(page,pageVO); pageVO.setRecords(LinkTypeWrapper.build().listEntityVO(page.getRecords(),null)); R> r = R.data(pageVO); r.setSuccess(true); return r; } /** * 参照列表查询 * * @param baseQueryObject 查询条件对象 * @return 查询结果 */ @Override public R> getRef(BaseQueryObject baseQueryObject) { Map conditionMap = baseQueryObject.getConditionMap(); if (conditionMap == null){ conditionMap = new HashMap<>(16); } if (!conditionMap.containsKey(DOMAIN)){ return R.fail("领域值不能为空"); } PageHelper pageHelper = baseQueryObject.getPageHelper(); if (pageHelper == null){ pageHelper = new PageHelper(-1); } String domainValue = conditionMap.get(DOMAIN); VciBaseUtil.alertNotNull(domainValue,"领域值"); conditionMap.remove(DOMAIN); LinkType queryObj = new LinkType(); BeanMap.create(queryObj).putAll(conditionMap); List doList = linkTypeService.list(Condition.getQueryWrapper(queryObj).lambda().eq(LinkType::getBizDomain, domainValue).orderByAsc(LinkType::getId)); return R.data(LinkTypeWrapper.build().listEntityVO(doList,null)); } /** * 根据英文名称批量查询对象 * * @param ids 对象英文名称 但是不能超过1000 * @return 业务对象 */ @Override public R> selectByIdCollection(List ids) { Func.requireNotNull(ids,"链接类型英文名称"); List voList = LinkTypeWrapper.build().listEntityVO( Optional.ofNullable(linkTypeService.list( Wrappers.query().lambda().in(LinkType::getId, ids) ) ).orElseGet(ArrayList::new),null ); return R.data(voList); } /** * 批量根据主键获取链接类型 * * @param pkLinkTypeCollection 链接类型主键集合 * @return 链接类型列表,如果有不存在的不会返回,全部不存在的则返回空列表 */ @Override public R> listLinkTypeByOidCollection(List pkLinkTypeCollection) { Func.requireNotNull(pkLinkTypeCollection,"链接类型主键"); List voList = LinkTypeWrapper.build().listEntityVO( Optional.ofNullable(linkTypeService.list( Wrappers.query().lambda().in(LinkType::getOid, pkLinkTypeCollection) ) ).orElseGet(ArrayList::new),null ); return R.data(voList); } /** * 获取链接类型,只有默认字段 * * @param linkTypeId 链接类型ID * @return 默认字段属性 */ @Override public R getDefaultAttrByLinkId(String linkTypeId) { return R.data(linkTypeService.getLinkTypeDefaultAttrById(linkTypeId)); } /** * 获取链接类型,有所有的字段 * * @param linkTypeId 链接类型id * @return 所有字段 */ @Override public R getAllAttributeByLinkId(String linkTypeId) { return R.data(linkTypeService.getLinkTypeAllAttrById(linkTypeId)); } /** * 获取链接类型,有所有的字段 * * @param linkTypeOid 链接类型主键 * @return 所有字段 */ @Override public R getAllAttributeByLinkOid(String linkTypeOid) { return R.data(linkTypeService.getLinkTypeAllAttrByOid(linkTypeOid)); } }