package com.vci.ubcs.code.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.code.constant.MdmBtmTypeConstant; import com.vci.ubcs.code.dto.DockingSystemDTO; import com.vci.ubcs.code.entity.CodeRule; import com.vci.ubcs.code.entity.DockingSystem; import com.vci.ubcs.code.entity.DockingSystemConfig; import com.vci.ubcs.code.mapper.DockingSystemConfigMapper; import com.vci.ubcs.code.mapper.DockingSystemMapper; import com.vci.ubcs.code.service.IDockingSystemService; import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO; import com.vci.ubcs.code.wrapper.DockingSystemWrapper; 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.VciBaseUtil; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.*; import java.util.stream.Collectors; import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING; import static com.vci.ubcs.code.constant.MdmLifeCycleConstant.CODE_RULE_LC; /*** * 系统接口管理-集成系统服务 * @author xiejun * @date 2023-06-01 */ @Service public class DockingSystemServiceImpl extends ServiceImpl implements IDockingSystemService { /*** * 集成系统管理服务 */ @Autowired(required = false) private DockingSystemMapper dockingSystemMapper; /*** * 集成系统管理服务 */ @Autowired(required = false) private DockingSystemConfigMapper dockingSystemConfigMapper; /** * 对象的操作 */ @Autowired private RevisionModelUtil revisionModelUtil; @Override public boolean addSave(DockingSystemDTO dockingSystemDTO) { VciBaseUtil.alertNotNull(dockingSystemDTO, "需要添加的数据对象"); //将DTO转换为DO DockingSystem dockingSystem = Objects.requireNonNull(BeanUtil.copy(dockingSystemDTO, DockingSystem.class)); String userId = AuthUtil.getUserId().toString(); DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSystem, MdmBtmTypeConstant.SYS_INT_BASE); dockingSystem.setLctid(CODE_RULE_LC); dockingSystem.setLcStatus(FRAMEWORK_RELEASE_EDITING); return dockingSystemMapper.insert(dockingSystem)>0; } /** * 修改 系统集成的系统信息 * @param dockingSystemDTO 系统集成的系统信息数据传输对象 * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象 */ @Override public DockingSystemVO editSave(DockingSystemDTO dockingSystemDTO) { VciBaseUtil.alertNotNull(dockingSystemDTO,"数据对象",dockingSystemDTO.getOid(),"系统集成的系统信息主键"); //将DTO转换为DO DockingSystem dockingSystem = dockingSystemMapper.selectById(dockingSystemDTO.getOid()); revisionModelUtil.copyFromDTOIgnore(dockingSystemDTO,dockingSystem); DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingSystem); dockingSystemMapper.updateById(dockingSystem); return DockingSystemWrapper.build().entityVO(dockingSystem); } /*** * 根据系统主键删除系统名称 * @param oids * @return * @throws VciBaseException */ @Override public boolean deleteDataById(String oids) throws VciBaseException { String message=""; try { VciBaseUtil.alertNotNull(oids, "系统集成的系统信息的主键"); List dockingSystemList = dockingSystemMapper.selectBatchIds(VciBaseUtil.str2List(oids)); Map systemNameMap = dockingSystemList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t.getName(),(o1, o2)->o2)); List dockingSystemConfigList = dockingSystemConfigMapper.selectList(Wrappers.query().lambda().in(DockingSystemConfig::getSourceSystemOid, VciBaseUtil.str2List(oids))); Set systemOidList=new HashSet<>(); Map errorMap = new HashMap<>(); if (!CollectionUtils.isEmpty(dockingSystemConfigList)) { dockingSystemConfigList.stream().forEach(dockingSystemConfig -> { if(!systemOidList.contains(dockingSystemConfig.getSourceSystemOid())&& systemNameMap.containsKey(dockingSystemConfig.getSourceSystemOid())){ String systemName=systemNameMap.get(dockingSystemConfig.getSourceSystemOid()); errorMap.put("error",errorMap.getOrDefault("error","") + ";"+systemName); } systemOidList.add(dockingSystemConfig.getSourceSystemOid()); }); } if(errorMap.size()>0){ throw new Throwable(errorMap.getOrDefault("error","")); } return dockingSystemMapper.deleteBatchIds(VciBaseUtil.str2List(oids))>0; }catch (Throwable e){ e.printStackTrace(); throw new VciBaseException(e.getMessage()); } } }