package com.vci.ubcs.code.service.impl; 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.*; /*** * 系统接口管理-接口配置服务 * @author xiejun * @date 2023-06-01 */ @Slf4j @Service public class DockingSystemConfigServiceImpl extends ServiceImpl 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 sysIntParamDTOList= dockingSystemConfigDTO.getSysIntParamDTOS(); List 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 sysIntHeaderDTOs= dockingSystemConfigDTO.getSysIntHeaderDTOS(); List 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(),"类路径"); } } }