xiejun
2023-06-01 85d10ebf08cb41fa3ec06272e6e991cdd0a534f9
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -4,22 +4,24 @@
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.code.entity.CodeClassify;
import com.vci.ubcs.code.feign.ICodeClassifyClient;
import com.vci.ubcs.code.webservice.entity.*;
import com.vci.ubcs.code.webservice.mapper.DockingPreAttrMappingMapper;
import com.vci.ubcs.code.webservice.service.IDockingPreAttrMappingService;
import com.vci.ubcs.code.webservice.service.IDockingPreAttrRangeService;
import com.vci.ubcs.code.webservice.service.IDockingPreMetaAttrService;
import com.vci.ubcs.code.webservice.service.*;
import com.vci.ubcs.code.webservice.vo.DokingAttributeSerchVO;
import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrMappingWrapper;
import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrRangeWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrRange;
import com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrMappingVO;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrRangeVO;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -37,13 +39,16 @@
@Service
public class DockingPreAttrMappingServiceImpl extends ServiceImpl<DockingPreAttrMappingMapper, DockingPreAttrMapping> implements IDockingPreAttrMappingService {
   /***
    * 集团分类属性属性映射配置服务
    */
   @Autowired(required = false)
   private DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
   /***
    * 主数据分类服务
    */
   @Autowired(required = true)
   private     ICodeClassifyClient codeClassifyClient;
   /***
    * 业务数据属性服务
@@ -63,8 +68,19 @@
   private IDockingPreAttrRangeService dockingPreAttrRangeService;
   /***
    * 集团分类视图模型服务
    */
   @Autowired(required = false)
   private IDockingPreViewModelService dockingPreViewModelService;
   /***
    * 集团属性服务
    */
   @Autowired(required = false)
   @Lazy
   private IDockingPreClassifyService dockingPreClassifyService;
   /***
    * 根据主数据分类主键获取分类信息配置
@@ -76,31 +92,40 @@
      VciBaseUtil.alertNotNull(codeClassifyId,"主数据分类主键");
      VciBaseUtil.alertNotNull(sourceClassifyId,"集团分类主键");
      //首先获取分类模板属性,然后与属性配置坐比较,以防被有增删属性的可能
      DockingPreClassify dockingPreClassify=dockingPreClassifyService.getById(sourceClassifyId);
      List<DockingPreMetaAttr> dockingPreMetaAttrList=   dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId));
      List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, sourceClassifyId).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
      Map<String/**属性主键**/, DockingPreAttrMapping> dockingPreAttrMappingMap = dockingPreAttrMappings.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getMetaListId(), t -> t));
      List<DockingPreViewModel> dockingPreViewModelList= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,sourceClassifyId));
      Map<String,DockingPreViewModel> dockingPreViewModelMap=dockingPreViewModelList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
      CodeClassify codeClassify= codeClassifyClient.getById(codeClassifyId);
      List<DockingPreAttrMapping> newDockingPreAttrMappingList=new ArrayList<>();
      dockingPreMetaAttrList.stream().forEach(dockingPreMetaAttr -> {
         String attrOid=dockingPreMetaAttr.getOid();
         DockingPreAttrMapping dockingPreAttrMapping=new DockingPreAttrMapping();
         if(dockingPreAttrMappingMap.containsKey(attrOid)){
            dockingPreAttrMapping=   dockingPreAttrMappingMap.get(attrOid);
            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreAttrMapping);
         }else{
            DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreAttrMapping, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
            dockingPreAttrMapping.setMetaListId(dockingPreMetaAttr.getOid());//属性主键
            dockingPreAttrMapping.setSourceAttrKey(dockingPreMetaAttr.getEnglishName());//英文名称
            dockingPreAttrMapping.setSourceAttrName(dockingPreMetaAttr.getChineseName());//中文名称
            dockingPreAttrMapping.setSourceClassifyId(dockingPreMetaAttr.getSourceClassifyId());//集团分类oid
            dockingPreAttrMapping.setSourceClassifyName("");//分类名称
            DockingPreViewModel dockingPreViewModel=new DockingPreViewModel();
            if(dockingPreViewModelMap.containsKey(dockingPreMetaAttr.getViewModelId())){
               dockingPreViewModel=dockingPreViewModelMap.get(dockingPreMetaAttr.getViewModelId());
            }
            dockingPreAttrMapping.setSourceClassifyName(dockingPreClassify.getClassName());//分类名称
            dockingPreAttrMapping.setViewModeId(dockingPreMetaAttr.getViewModelId());//模型视图id
            dockingPreAttrMapping.setViewModelName("");//分类模型名称
            dockingPreAttrMapping.setViewName("");//分类模型名称
            dockingPreAttrMapping.setViewModelName(dockingPreViewModel.getName());//分类模型名称
            dockingPreAttrMapping.setViewName(dockingPreViewModel.getViewName());//分类模型名称
            dockingPreAttrMapping.setTargetClassifyId(codeClassifyId);
            dockingPreAttrMapping.setTargetClassifyName(codeClassify.getName());
         }
         newDockingPreAttrMappingList.add(dockingPreAttrMapping);
      });
      return    dockingPreAttrMappingDO2VOS(dockingPreAttrMappings,false);
      return    dockingPreAttrMappingDO2VOS(newDockingPreAttrMappingList,false);
   }
   /***
@@ -191,14 +216,15 @@
   /***
    * 根据主数据oid检测是否属性映射配置
    * @param targetClassifyId
    * @param sourceClassifyId
    * @return
    * @throws Exception
    */
   @Override
   public boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId){
   public boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId,String sourceClassifyId){
      Long count =0L;
      try {
         count = dockingPreAttrMappingMapper.selectCount(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, targetClassifyId));
         count = dockingPreAttrMappingMapper.selectCount(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, targetClassifyId).eq(DockingPreAttrMapping::getSourceClassifyId,sourceClassifyId));
      }catch (Throwable e){
         e.printStackTrace();;
      } finally {
@@ -206,6 +232,11 @@
      }
   }
   @Override
   public R search(DokingAttributeSerchVO dokingAttributeSerchVO) {
      return null;
   }
   /***
    * 对象转换