xiejun
2023-06-21 ac0ff6946b0568f9b512ef91ca79312dd39cb78f
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -1,23 +1,156 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.DockingSysIntHeaderDTO;
import com.vci.ubcs.code.dto.DockingSystemConfigDTO;
import com.vci.ubcs.code.dto.DockingSysIntParamDTO;
import com.vci.ubcs.code.entity.DockingSysIntHeader;
import com.vci.ubcs.code.entity.DockingSysIntParam;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.enumpack.SysIntegrationRequestTypeEnum;
import com.vci.ubcs.code.mapper.DockingSysIntHeaderMapper;
import com.vci.ubcs.code.mapper.DockingSysIntParamMapper;
import com.vci.ubcs.code.mapper.DockingSystemConfigMapper;
import com.vci.ubcs.code.mapper.DockingSystemMapper;
import com.vci.ubcs.code.service.IDockingSysIntHeaderService;
import com.vci.ubcs.code.service.IDockingSysIntParamService;
import com.vci.ubcs.code.service.IDockingSystemConfigService;
import com.vci.ubcs.code.vo.pagemodel.DockingSysIntHeaderVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.Map;
import java.util.function.Function;
import java.util.*;
/***
 * 系统接口管理-接口配置服务
 * @author xiejun
 * @date 2023-06-01
 */
@Slf4j
@Service
public class DockingSystemConfigServiceImpl extends ServiceImpl<DockingSystemConfigMapper, DockingSystemConfig> implements IDockingSystemConfigService{
   /***
    * 集成系统管理服务
    */
   @Autowired(required = false)
   private DockingSystemConfigMapper dockingSystemConfigMapper;
   /***
    * 集成接口-集成接口管理参数服务
    */
   @Autowired(required = false)
   private IDockingSysIntParamService dockingSysIntParamService;
   /***
    * 集成接口-集成接口管理参数服务
    */
   @Autowired(required = false)
   private IDockingSysIntHeaderService dockingSysIntHeaderService;
   /***
    * 集成接口-集成系统服务
    */
   @Autowired(required = false)
   private DockingSystemMapper dockingSystemMapper;
   /**
    * 对象的操作
    */
   @Autowired
   private RevisionModelUtil revisionModelUtil;
   /**
    * 增加系统集成的接口管理信息
    * @param dockingSystemConfigDTO 系统集成的系统信息数据传输对象
    * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
    */
   @Transactional(rollbackFor = Exception.class)
   @Override
   public boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO) {
      log.info(" 增加系统集成的接口管理信息:"+dockingSystemConfigDTO.toString());
      VciBaseUtil.alertNotNull(dockingSystemConfigDTO, "需要添加的数据对象");
      checkColumnNotNull(dockingSystemConfigDTO);
      String sourcesystemoid = dockingSystemConfigDTO.getSourceSystemOid();
      DockingSystem dockingSystem = dockingSystemMapper.selectById(sourcesystemoid);
      dockingSystemConfigDTO.setSysBaseOid(sourcesystemoid);
      dockingSystemConfigDTO.setSysBaseId(dockingSystem.getId());
      dockingSystemConfigDTO.setSysBaseName(dockingSystem.getName());
      dockingSystemConfigDTO.setUsedFlag("true");//设置默认启用状态
      //将DTO转换为DO
      DockingSystemConfig dockingSystemConfig = new DockingSystemConfig();
      revisionModelUtil.copyFromDTOIgnore(dockingSystemConfigDTO,dockingSystemConfig);
      List<DockingSysIntParamDTO> sysIntParamDTOList=  dockingSystemConfigDTO.getSysIntParamDTOS();
      List<DockingSysIntParam> sysIntParamList=new ArrayList<>();
      if(!CollectionUtils.isEmpty(sysIntParamDTOList)) {
         sysIntParamDTOList.stream().forEach(sysIntParamDTO -> {
            DockingSysIntParam sysIntParamDO = new DockingSysIntParam();
            sysIntParamDTO.setInfoOid(dockingSystemConfigDTO.getOid());
            BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
            DefaultAttrAssimtUtil.addDefaultAttrAssimt(sysIntParamDO,MdmBtmTypeConstant.SYS_INT_PARAMTERY);
            sysIntParamList.add(sysIntParamDO);
         });
      }
      List<DockingSysIntHeaderDTO> sysIntHeaderDTOs= dockingSystemConfigDTO.getSysIntHeaderDTOS();
      List<DockingSysIntHeader> sysIntHeaderList = new ArrayList<>();
      if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
         sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
            DockingSysIntHeader dockingSysIntHeader = new DockingSysIntHeader();
            sysIntHeaderDTO.setInfoOid(dockingSystemConfigDTO.getOid());
            BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, dockingSysIntHeader);
            DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSysIntHeader,MdmBtmTypeConstant.SYS_INT_HEADER);
            sysIntHeaderList.add(dockingSysIntHeader);
         });
      }
      dockingSysIntParamService.saveBatch(sysIntParamList);
      dockingSysIntHeaderService.saveBatch(sysIntHeaderList);
      DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSystemConfig,MdmBtmTypeConstant.SYS_INT_INFO);
      dockingSystemConfigMapper.insert(dockingSystemConfig);
      return true;
   }
   @Override
   public DockingSystemVO editSave(DockingSystemConfigDTO dockingSystemDTO) {
      return null;
   }
   @Override
   public boolean deleteDataById(String oids) {
      return false;
   }
   /**
    * 系统集成接口基础信息Null字段检验
    * @param dockingSystemConfigDTO 系统集成基础信息数据传输对象
    * @throws VciBaseException 参数为空,唯一项,必输项不通过时会抛出异常
    */
   private void checkColumnNotNull(DockingSystemConfigDTO  dockingSystemConfigDTO) throws VciBaseException {
      if (SysIntegrationRequestTypeEnum.HTTP.getValue().equals(dockingSystemConfigDTO.getInterfaceType())){
         VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getRequestUrl(),"HTTP接口的请求地址",dockingSystemConfigDTO.getRequestMethod(),"HTTP接口的请求方式");
      }
      if (SysIntegrationRequestTypeEnum.WEB_SERVICE.getValue().equals(dockingSystemConfigDTO.getInterfaceType())){
         VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getInterfaceFunction(),"WebService的接口函数");
      }
      if (SysIntegrationRequestTypeEnum.CLASSPATH.getValue().equals(dockingSystemConfigDTO.getInterfaceType())){
         VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getClassPath(),"类路径");
      }
   }
}