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 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.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.cglib.beans.BeanMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; 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; private final String DOMAIN = "domain"; /** * 参照获取业务类型详情信息 * * @param oid 主键 * @return 业务类型详情信息 */ @Override @GetMapping(GET_DETAIL) public R getDetail(String oid) { return R.data(btmTypeService.getBtmTypeByOid(oid)); } /** * 参照列表查询 * * @param baseQueryObject 查询条件对象 * @return 查询结果 */ @Override @PostMapping(GET_REF_PAGE) 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); BtmType queryObj = new BtmType(); BeanMap.create(queryObj).putAll(conditionMap); Query query = new Query(); query.setSize(pageHelper.getLimit()); query.setCurrent(pageHelper.getPage()); IPage page = btmTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(queryObj).lambda().eq(BtmType::getDomain, domainValue).orderByAsc(BtmType::getId)); Page 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 baseQueryObject 查询条件对象 * @return 查询结果 */ @Override @PostMapping(GET_REF) public R> getRef(BaseQueryObject baseQueryObject) { Map conditionMap = baseQueryObject.getConditionMap(); if (conditionMap == null){ conditionMap = new HashMap<>(16); } if (!conditionMap.containsKey(DOMAIN)){ return R.fail("领域值不能为空"); } String domainValue = conditionMap.get(DOMAIN); VciBaseUtil.alertNotNull(domainValue,"领域值"); conditionMap.remove(DOMAIN); BtmType queryObj = new BtmType(); BeanMap.create(queryObj).putAll(conditionMap); List list = btmTypeService.list(Condition.getQueryWrapper(queryObj).lambda().eq(BtmType::getDomain, domainValue).orderByAsc(BtmType::getId)); return R.data(BtmTypeWrapper.build().listEntityVO(list)); } /** * 根据英文名称批量查询对象 * * @param ids 对象英文名称 但是不能超过1000 * @return 业务对象 */ @Override @PostMapping(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 @PostMapping(GET_BY_OIDS) public R> listBtmTypeByOidCollection(List 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); } /** * 获取业务类型,只有默认字段 * * @param btmTypeId 业务类型id * @return 默认字段属性 */ @Override public R getDefaultAttrByBtmId(String btmTypeId) { return R.data(Optional.ofNullable(btmTypeService.getDefaultAttrByBtmId(btmTypeId)).orElseGet(BtmTypeVO::new)); } /** * 获取业务类型,有所有的字段 * * @param btmTypeId 业务类型id * @return 所有字段 */ @Override public R getAllAttributeByBtmId(String btmTypeId) { return R.data(Optional.ofNullable(btmTypeService.getAllAttributeByBtmId(btmTypeId)).orElseGet(BtmTypeVO::new)); } /** * 获取业务类型,有所有的字段 * * @param btmTypeOid 业务类型主键 * @return 所有字段 */ @Override public R getAllAttributeByBtmOid(String btmTypeOid) { return R.data(Optional.ofNullable(btmTypeService.getAllAttributeByBtmOid(btmTypeOid)).orElseGet(BtmTypeVO::new)); } }