| | |
| | | package com.vci.ubcs.omd.service.impl; |
| | | |
| | | import com.alibaba.cloud.commons.lang.StringUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vci.ubcs.omd.constant.BtmTypeFieldConstant; |
| | | import com.vci.ubcs.omd.entity.LinkType; |
| | | import com.vci.ubcs.omd.entity.LinkTypeAttribute; |
| | | import com.vci.ubcs.omd.mapper.LinkTypeAttributeMapper; |
| | | import com.vci.ubcs.omd.service.IAttributeService; |
| | | import com.vci.ubcs.omd.service.ILinkTypeAttributeService; |
| | | import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; |
| | | import com.vci.ubcs.omd.vo.LinkTypeAttributeVO; |
| | | import com.vci.ubcs.omd.vo.LinkTypeVO; |
| | | import com.vci.ubcs.omd.wrapper.LinkTypeAttributeWrapper; |
| | | import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; |
| | | import com.vci.ubcs.starter.web.util.VciBaseUtil; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * Description: 链接类型包含属性的服务 |
| | |
| | | VciBaseUtil.alertNotNull(oid); |
| | | return baseMapper.selectOne(Wrappers.<LinkTypeAttribute>query().lambda().eq(LinkTypeAttribute::getOid,oid)); |
| | | } |
| | | |
| | | /** |
| | | * 根据链接类型获取默认字段 |
| | | * |
| | | * @param linkTypeVO 链接类型 |
| | | * @return 执行结果 |
| | | */ |
| | | @Override |
| | | public List<LinkTypeAttributeVO> getDefaultAttributes(LinkTypeVO linkTypeVO) { |
| | | Objects.requireNonNull(linkTypeVO,"链接类型不能为空"); |
| | | List<LinkTypeAttributeVO> list = new ArrayList<>(); |
| | | // 业务类型的基本字段 |
| | | BtmTypeFieldConstant.LINK_TYPE_FIELD_MAP.forEach((id, name) -> { |
| | | LinkTypeAttributeVO vo = new LinkTypeAttributeVO(); |
| | | vo.setId(id); |
| | | vo.setName(name); |
| | | vo.setPkLinkType(linkTypeVO.getOid()); |
| | | if (StringUtils.equals(id,"oid")){ |
| | | vo.setNullableFlag(false); |
| | | }else { |
| | | vo.setNullableFlag(true); |
| | | } |
| | | if (Arrays.asList("createtime","lastmodifytime","owner").contains(id)){ |
| | | vo.setAttrDataType(VciFieldTypeEnum.VTDateTime.name()); |
| | | vo.setAttributeLength(6); |
| | | }else { |
| | | vo.setAttrDataType(VciFieldTypeEnum.VTString.name()); |
| | | vo.setAttributeLength(150); |
| | | } |
| | | list.add(vo); |
| | | }); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 根据链接类型获取所有的字段 |
| | | * |
| | | * @param linkTypeVO 链接类型 |
| | | * @return 执行结果 |
| | | */ |
| | | @Override |
| | | public List<LinkTypeAttributeVO> getAllAttributes(LinkTypeVO linkTypeVO) { |
| | | Objects.requireNonNull(linkTypeVO,"链接类型不能为空"); |
| | | List<LinkTypeAttributeVO> attributes = getAttributesNoDefault(linkTypeVO); |
| | | attributes.addAll(getDefaultAttributes(linkTypeVO)); |
| | | return attributes; |
| | | } |
| | | |
| | | /** |
| | | * 获取非默认字段的链接类型属性 |
| | | * |
| | | * @param linkTypeVO 链接类型 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<LinkTypeAttributeVO> getAttributesNoDefault(LinkTypeVO linkTypeVO) { |
| | | Objects.requireNonNull(linkTypeVO,"链接类型不能为空"); |
| | | return LinkTypeAttributeWrapper.build().listEntityVO(baseMapper.selectList(Wrappers.<LinkTypeAttribute>query().lambda().eq(LinkTypeAttribute::getPkLinkType, linkTypeVO.getOid()))); |
| | | } |
| | | |
| | | /** |
| | | * 批量获取非默认字段的链接类型属性 |
| | | * |
| | | * @param linkTypeDOList 链接类型 |
| | | * @return 执行结果 |
| | | */ |
| | | @Override |
| | | public Map<String, List<LinkTypeAttributeVO>> batchGetAttributesNoDefault(List<LinkType> linkTypeDOList) { |
| | | VciBaseUtil.alertNotNull(linkTypeDOList,"链接类型集合"); |
| | | Set<String> oidSet = linkTypeDOList.stream().map(LinkType::getOid).collect(Collectors.toSet()); |
| | | if (CollectionUtils.isEmpty(oidSet)){ |
| | | return new HashMap<>(); |
| | | } |
| | | List<LinkTypeAttribute> attributes = baseMapper.selectList(Wrappers.<LinkTypeAttribute>query().lambda().in(LinkTypeAttribute::getPkLinkType, oidSet)); |
| | | return LinkTypeAttributeWrapper.build().listEntityVO(Optional.ofNullable(attributes).orElseGet(ArrayList::new)).stream().collect(Collectors.groupingBy(LinkTypeAttributeVO::getPkLinkType)); |
| | | } |
| | | } |