package com.vci.ubcs.code.service.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
|
import com.vci.ubcs.code.constant.MdmDuckingConstant;
|
import com.vci.ubcs.code.constant.MdmEngineConstant;
|
import com.vci.code.dao.*;
|
import com.vci.ubcs.code.dto.datapush.classify.JsonRootDataDTO;
|
import com.vci.ubcs.code.dto.datapush.classify.NodeClassifyDTO;
|
import com.vci.ubcs.code.dto.datapush.classify.NodeDataDTO;
|
import com.vci.ubcs.code.dto.datapush.classify.NodeLibraryDTO;
|
import com.vci.ubcs.code.dto.datapush.result.ResultJsonDTO;
|
import com.vci.ubcs.code.dto.datapush.result.ResultNodeDataDTO;
|
import com.vci.ubcs.code.dto.datapush.result.ResultNodeObjectDTO;
|
import com.vci.ubcs.code.dao.*;
|
import com.vci.ubcs.code.enumpack.SysIntegrationAuthorityTypeEnum;
|
import com.vci.ubcs.code.enumpack.SysIntegrationRequestTypeEnum;
|
import com.vci.ubcs.code.enumpack.sysIntegrationPushTypeEnum;
|
import com.vci.code.model.*;
|
import com.vci.ubcs.code.service.CodeClassifyServiceI;
|
import com.vci.ubcs.code.service.MdmEngineServiceI;
|
import com.vci.ubcs.code.service.SysIntBaseServiceI;
|
import com.vci.ubcs.code.service.SysIntInfoServiceI;
|
import com.vci.ubcs.code.utils.HttpUtils;
|
import com.vci.ubcs.code.utils.WsErpClientUtil;
|
import com.thoughtworks.xstream.XStream;
|
import com.thoughtworks.xstream.io.xml.DomDriver;
|
import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
|
import com.vci.starter.revision.service.RevisionModelUtil;
|
import com.vci.starter.web.constant.QueryOptionConstant;
|
import com.vci.starter.web.exception.VciBaseException;
|
import com.vci.starter.web.pagemodel.BaseResult;
|
import com.vci.starter.web.pagemodel.DataGrid;
|
import com.vci.starter.web.pagemodel.PageHelper;
|
import com.vci.starter.web.pagemodel.TreeQueryObject;
|
import com.vci.starter.web.util.BeanUtilForVCI;
|
import com.vci.starter.web.util.VciBaseUtil;
|
import com.vci.starter.web.util.VciDateUtil;
|
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
|
import com.vci.ubcs.code.model.*;
|
import com.vci.ubcs.code.vo.pagemodel.*;
|
import com.vci.web.pageModel.BatchCBO;
|
import com.vci.web.redis.RedisService;
|
import com.vci.web.service.WebBoServiceI;
|
import com.vci.web.util.WebUtil;
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
|
import org.springblade.code.dao.*;
|
import com.vci.ubcs.code.dto.SysIntHeaderDTO;
|
import com.vci.ubcs.code.dto.SysIntInfoDTO;
|
import com.vci.ubcs.code.dto.SysIntParamDTO;
|
import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
|
import org.springblade.code.model.*;
|
import org.springblade.code.vo.pagemodel.*;
|
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.util.CollectionUtils;
|
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
|
|
|
/**
|
* 系统集成基础信息服务
|
* @author lihang
|
* @date 2022-03-07
|
*/
|
@Service
|
public class SysIntInfoServiceImpl implements SysIntInfoServiceI {
|
|
@Value("${dataSyncPush.dataParamName:xmlData}")
|
public String DATA_PARAM_NAME;
|
/**
|
* 日志
|
*/
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
/**
|
* 数据操作层
|
*/
|
@Resource
|
private SysIntInfoDaoI sysIntInfoMapper;
|
|
/**
|
* 业务类型操作的服务
|
*/
|
@Autowired
|
@Lazy
|
private WebBoServiceI boService;
|
|
/**
|
* 对象的操作
|
*/
|
@Autowired
|
private RevisionModelUtil revisionModelUtil;
|
|
/**
|
* 系统集成中的系统信息服务
|
*/
|
@Autowired
|
private SysIntBaseServiceI sysIntBaseService;
|
|
/**
|
* 接口参数
|
*/
|
@Autowired
|
private SysIntParamDaoI sysIntParamDaoI;
|
|
/**
|
* 接口验证信息
|
*/
|
@Autowired
|
private SysIntHeaderDaoI sysIntHeaderDaoI;
|
|
/**
|
* 分类业务类型操作服务
|
*/
|
@Autowired
|
private CodeClassifyServiceI codeClassifyServiceI;
|
/**
|
* 缓存服务
|
*/
|
@Autowired
|
private RedisService redisService;
|
/**
|
* 集成日志数据操作层
|
*/
|
@Resource
|
private DockingLogeDaoI dockingLogeDaoI;
|
@Resource
|
private DockingTaskDaoI dockingTaskDaoI;
|
/**
|
* 数据服务
|
*/
|
@Autowired(required = false)
|
@Lazy
|
private MdmEngineServiceI mdmEngineServiceI;
|
|
/**
|
* 查询所有的系统集成基础信息
|
* @param conditionMap 查询条件
|
* @param pageHelper 分页和排序
|
* @return 执行结果
|
* @throws VciBaseException 查询条件和分页出错的时候会抛出异常
|
*/
|
@Override
|
public DataGrid<SysIntInfoVO> gridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
|
if (pageHelper == null) {
|
pageHelper = new PageHelper(-1);
|
}
|
pageHelper.addDefaultDesc("createTime");
|
List<SysIntInfoDO> doList = sysIntInfoMapper.selectByCondition(conditionMap,pageHelper);
|
// Set<String> targetIdList = doList.stream().map(SysIntInfoDO::getTargetSystemOid).collect(Collectors.toSet());
|
// Set<String> sourceIdList = doList.stream().map(SysIntInfoDO::getSourceSystemOid).collect(Collectors.toSet());
|
// List<String> oidList = new ArrayList<>();
|
// oidList.addAll(targetIdList);
|
// oidList.addAll(sourceIdList);
|
// if (!CollectionUtils.isEmpty(oidList)) {
|
// List<SysIntBaseVO> sysIntBaseVOList = (List<SysIntBaseVO>) sysIntBaseService.listSysIntBaseByOids(oidList);
|
// matchSysOid2BuildInfoDO(doList, sysIntBaseVOList);
|
// }
|
DataGrid<SysIntInfoVO> dataGrid=new DataGrid<SysIntInfoVO>();
|
if (!CollectionUtils.isEmpty(doList)) {
|
dataGrid.setData(sysIntInfoDO2VOs(doList));
|
dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(sysIntInfoMapper.countByCondition(conditionMap))));
|
}
|
return dataGrid;
|
}
|
|
/**
|
* 根据BaseVO集合中的oid对InfoDO的目标系统主键、来源系统主键进行匹配,组装系统名称和系统标识
|
* @param doList 系统集成基础信息对象集合
|
* @param sysIntBaseVOList 系统集成系统信息集合
|
*/
|
private void matchSysOid2BuildInfoDO(List<SysIntInfoDO> doList, List<SysIntBaseVO> sysIntBaseVOList) {
|
doList.forEach(info -> {
|
sysIntBaseVOList.stream().filter(vo -> {
|
return info.getTargetSystemOid().equals(vo.getOid());
|
}).forEach(base -> {
|
info.setTargetSysId(base.getId());
|
info.setTargetSysName(base.getName());
|
});
|
sysIntBaseVOList.stream().filter(vo -> {
|
return info.getSourceSystemOid().equals(vo.getOid());
|
}).forEach(base -> {
|
info.setSourceSysId(base.getId());
|
info.setSourceSysName(base.getName());
|
info.setAuthorityTypeText(SysIntegrationAuthorityTypeEnum.getTextByValue(info.getAuthorityType()));
|
});
|
});
|
}
|
@Override
|
public List<SysIntInfoDO> selectAll(Map conditonMap){
|
return sysIntInfoMapper.selectAll(conditonMap);
|
}
|
|
/**
|
* 批量数据对象转换为显示对象
|
* @param sysIntInfoDOs 数据对象列表
|
* @return 显示对象
|
* @throws VciBaseException 参数为空或者不存在的时候会抛出异常
|
*/
|
@Override
|
public List<SysIntInfoVO> sysIntInfoDO2VOs(Collection<SysIntInfoDO> sysIntInfoDOs) throws VciBaseException{
|
List<SysIntInfoVO> voList = new ArrayList<SysIntInfoVO>();
|
if(!CollectionUtils.isEmpty(sysIntInfoDOs)){
|
for(SysIntInfoDO s: sysIntInfoDOs){
|
SysIntInfoVO vo = sysIntInfoDO2VO(s);
|
if(vo != null){
|
voList.add(vo);
|
}
|
}
|
}
|
return voList;
|
}
|
|
/**
|
* 数据对象转换为显示对象
|
* @param sysIntInfoDO 数据对象
|
* @return 显示对象
|
* @throws VciBaseException 拷贝属性出错的时候会抛出异常
|
*/
|
@Override
|
public SysIntInfoVO sysIntInfoDO2VO(SysIntInfoDO sysIntInfoDO) throws VciBaseException{
|
SysIntInfoVO vo = new SysIntInfoVO();
|
if(sysIntInfoDO != null){
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDO,vo);
|
//如果有lcstatus的类的话
|
vo.setPushTypeText(sysIntegrationPushTypeEnum.getTextByValue(vo.getPushType()));
|
|
}
|
return vo;
|
}
|
|
/**
|
* 增加系统集成基础信息
|
* @param sysIntInfoDTO 系统集成基础信息数据传输对象
|
* @return 执行结果
|
* @throws VciBaseException 参数为空,唯一项,必输项不通过时会抛出异常
|
*/
|
@Override
|
public SysIntInfoVO addSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
|
VciBaseUtil.alertNotNull(sysIntInfoDTO,"需要添加的数据对象");
|
checkColumnNotNull(sysIntInfoDTO);
|
String sourcesystemoid = sysIntInfoDTO.getSourcesystemoid();
|
SysIntBaseVO sysIntBaseVO = sysIntBaseService.getObjectByOid(sourcesystemoid);
|
sysIntInfoDTO.setSysbaseoid(sourcesystemoid);
|
sysIntInfoDTO.setSysbaseid(sysIntBaseVO.getId());
|
sysIntInfoDTO.setSysbasename(sysIntBaseVO.getName());
|
sysIntInfoDTO.setUsedflag("true");//设置默认启用状态
|
|
//将DTO转换为DO
|
SysIntInfoDO sysIntInfoDO = new SysIntInfoDO();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDTO,sysIntInfoDO);
|
WebUtil.setPersistence(false);//不执行保存
|
|
BatchCBO batchCBO_update = new BatchCBO();
|
BatchCBO sysIntInfoBo= sysIntInfoMapper.insert(sysIntInfoDO);
|
|
List<SysIntParamDTO> sysIntParamDTOS= sysIntInfoDTO.getSysIntParamDTOs();
|
List<SysIntParamDO> sysIntParamDOS=new ArrayList<>();
|
if(!CollectionUtils.isEmpty(sysIntParamDTOS)) {
|
sysIntParamDTOS.stream().forEach(sysIntParamDTO -> {
|
SysIntParamDO sysIntParamDO = new SysIntParamDO();
|
sysIntParamDTO.setInfoOid(sysIntInfoDO.getOid());
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
|
sysIntParamDOS.add(sysIntParamDO);
|
});
|
}
|
List<SysIntHeaderDTO> sysIntHeaderDTOs= sysIntInfoDTO.getSysIntHeaderDTOS();
|
List<SysIntHeaderDO> sysIntHeaderDOS = new ArrayList<>();
|
if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
|
sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
|
SysIntHeaderDO sysIntHeaderDO = new SysIntHeaderDO();
|
sysIntHeaderDTO.setInfoOid(sysIntInfoDO.getOid());
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, sysIntHeaderDO);
|
sysIntHeaderDOS.add(sysIntHeaderDO);
|
});
|
}
|
|
batchCBO_update.copyFromOther(sysIntInfoBo);
|
//批量处理保存header对象
|
if(!CollectionUtils.isEmpty(sysIntHeaderDOS)) {
|
BatchCBO sysIntHeaderBO = sysIntHeaderDaoI.batchInsert(sysIntHeaderDOS);
|
batchCBO_update.copyFromOther(sysIntHeaderBO);
|
}
|
//批量处理保存Param对象
|
if(!CollectionUtils.isEmpty(sysIntParamDOS)) {
|
BatchCBO sysIntParamBO = sysIntParamDaoI.batchInsert(sysIntParamDOS);
|
batchCBO_update.copyFromOther(sysIntParamBO);
|
}
|
WebUtil.setPersistence(true);
|
boService.persistenceBatch(batchCBO_update);//一起执行保存
|
|
return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
|
}
|
|
/**
|
*
|
* @param sysIntInfoDO
|
* @param sysIntHeaderDOS
|
* @param sysIntParamDOS
|
* @return
|
*/
|
private SysIntInfoVO sysIntInfoDO2VO(SysIntInfoDO sysIntInfoDO, List<SysIntHeaderDO> sysIntHeaderDOS, List<SysIntParamDO> sysIntParamDOS) {
|
SysIntInfoVO vo = new SysIntInfoVO();
|
if(sysIntInfoDO != null){
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDO,vo);
|
//如果有lcstatus的类的话
|
List<SysIntParamVO> sysIntParamVOs=new ArrayList<>();
|
if(!CollectionUtils.isEmpty(sysIntParamDOS)){
|
sysIntParamDOS.stream().forEach(sysIntParamDO -> {
|
SysIntParamVO sysIntParamVO=new SysIntParamVO();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDO,sysIntParamVO);
|
sysIntParamVOs.add(sysIntParamVO);
|
});
|
vo.setSysIntParamVOs(sysIntParamVOs);
|
}
|
List<SysIntHeaderVO> sysIntHeaderVOs=new ArrayList<>();
|
if(!CollectionUtils.isEmpty(sysIntHeaderDOS)){
|
sysIntHeaderDOS.stream().forEach(sysIntHeaderDO -> {
|
SysIntHeaderVO sysIntHeaderVO=new SysIntHeaderVO();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDO,sysIntHeaderVO);
|
sysIntHeaderVOs.add(sysIntHeaderVO);
|
});
|
vo.setSysIntHeaderVOs(sysIntHeaderVOs);
|
}
|
}
|
return vo;
|
}
|
|
/**
|
* 系统集成接口基础信息Null字段检验
|
* @param sysIntInfoDTO 系统集成基础信息数据传输对象
|
* @throws VciBaseException 参数为空,唯一项,必输项不通过时会抛出异常
|
*/
|
private void checkColumnNotNull(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException {
|
if (SysIntegrationRequestTypeEnum.HTTP.getValue().equals(sysIntInfoDTO.getInterfacetype())){
|
VciBaseUtil.alertNotNull(sysIntInfoDTO.getRequesturl(),"HTTP接口的请求地址",sysIntInfoDTO.getRequestmethod(),"HTTP接口的请求方式");
|
}
|
if (SysIntegrationRequestTypeEnum.WEB_SERVICE.getValue().equals(sysIntInfoDTO.getInterfacetype())){
|
VciBaseUtil.alertNotNull(sysIntInfoDTO.getInterfaceFunction(),"WebService的接口函数");
|
}
|
if (SysIntegrationRequestTypeEnum.CLASSPATH.getValue().equals(sysIntInfoDTO.getInterfacetype())){
|
VciBaseUtil.alertNotNull(sysIntInfoDTO.getClassPath(),"类路径");
|
}
|
}
|
|
/**
|
* 修改系统集成基础信息
|
* @param sysIntInfoDTO 系统集成基础信息数据传输对象
|
* @return 执行结果
|
* @throws VciBaseException 参数为空,唯一项,必输项不通过时会抛出异常
|
*/
|
@Override
|
public SysIntInfoVO editSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
|
VciBaseUtil.alertNotNull(sysIntInfoDTO,"数据对象",sysIntInfoDTO.getOid(),"系统集成基础信息主键");
|
|
|
String sourcesystemoid = sysIntInfoDTO.getSourcesystemoid();
|
SysIntBaseVO sysIntBaseVO = sysIntBaseService.getObjectByOid(sourcesystemoid);
|
sysIntInfoDTO.setSysbaseoid(sourcesystemoid);
|
sysIntInfoDTO.setSysbaseid(sysIntBaseVO.getId());
|
sysIntInfoDTO.setSysbasename(sysIntBaseVO.getName());
|
|
//将DTO转换为DO
|
SysIntInfoDO sysIntInfoDO = selectByOid(sysIntInfoDTO.getOid());
|
revisionModelUtil.copyFromDTOIgnore(sysIntInfoDTO,sysIntInfoDO);
|
String sysInfoOid=sysIntInfoDO.getOid();
|
List<SysIntParamDTO> sysIntParamDTOS= sysIntInfoDTO.getSysIntParamDTOs();
|
List<SysIntParamDO> sysIntParamDOS=new ArrayList<>();
|
if(!CollectionUtils.isEmpty(sysIntParamDTOS)) {
|
sysIntParamDTOS.stream().forEach(sysIntParamDTO -> {
|
SysIntParamDO sysIntParamDO = new SysIntParamDO();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
|
sysIntParamDOS.add(sysIntParamDO);
|
});
|
}
|
List<SysIntHeaderDTO> sysIntHeaderDTOs= sysIntInfoDTO.getSysIntHeaderDTOS();
|
List<SysIntHeaderDO> sysIntHeaderDOS = new ArrayList<>();
|
if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
|
sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
|
SysIntHeaderDO sysIntHeaderDO = new SysIntHeaderDO();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, sysIntHeaderDO);
|
sysIntHeaderDOS.add(sysIntHeaderDO);
|
});
|
}
|
WebUtil.setPersistence(false);//不执行保存
|
BatchCBO batchCBO_update = new BatchCBO();
|
BatchCBO sysIntInfoBo= sysIntInfoMapper.updateByPrimaryKey(sysIntInfoDO);
|
|
batchCBO_update.copyFromOther(sysIntInfoBo);
|
//批量处理保存header对象
|
if(!CollectionUtils.isEmpty(sysIntHeaderDOS)) {
|
List<String> idList=new ArrayList<>();
|
List<SysIntHeaderDO> headers_old = getHeadersBySystemInfoOid(sysInfoOid);
|
for (SysIntHeaderDO sysIntHeaderDO:headers_old){
|
sysIntHeaderDO.setUsedflag(MdmDuckingConstant.FLAG_FAIL);
|
idList.add(sysIntHeaderDO.getOid());
|
}
|
if(idList.size()!=0){
|
BatchCBO sysIntHeaderDeleteBO = sysIntHeaderDaoI.batchDeleteByOids(idList);
|
batchCBO_update.copyFromOther(sysIntHeaderDeleteBO);
|
}
|
//再新增headers
|
for(SysIntHeaderDO sysIntHeaderDO:sysIntHeaderDOS){
|
sysIntHeaderDO.setUsedflag(MdmDuckingConstant.FLAG_TRUE);
|
sysIntHeaderDO.setInfoOid(sysIntInfoDTO.getOid());
|
|
}
|
BatchCBO batchCBO_insert = sysIntHeaderDaoI.batchInsert(sysIntHeaderDOS);
|
batchCBO_update.copyFromOther(batchCBO_insert);
|
}
|
//批量处理保存Param对象
|
if(!CollectionUtils.isEmpty(sysIntParamDOS)) {
|
//先删除params_old
|
List<String> idList=new ArrayList<>();
|
List<SysIntParamDO> params_old = getParamsBySystemInfoOid(sysInfoOid);
|
for (SysIntParamDO sysIntParamDO:params_old){
|
sysIntParamDO.setUsedflag(MdmDuckingConstant.FLAG_FAIL);
|
idList.add(sysIntParamDO.getOid());
|
}
|
if(idList.size()!=0){
|
BatchCBO sysIntParamDeleteBO = sysIntParamDaoI.batchDeleteByOids(idList);
|
batchCBO_update.copyFromOther(sysIntParamDeleteBO);
|
}
|
//再新增params
|
for(SysIntParamDO sysIntParamDOi:sysIntParamDOS){
|
sysIntParamDOi.setUsedflag(MdmDuckingConstant.FLAG_TRUE);
|
sysIntParamDOi.setInfoOid(sysIntInfoDTO.getOid());
|
}
|
BatchCBO sysIntParamBO = sysIntParamDaoI.batchInsert(sysIntParamDOS);
|
batchCBO_update.copyFromOther(sysIntParamBO);
|
}
|
WebUtil.setPersistence(true);//不执行保存
|
boService.persistenceBatch(batchCBO_update);//一起执行保存
|
return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
|
}
|
|
/**
|
* 校验是否可以删除,如果存在下级,并且下级有数据引用则不能删除
|
* @param sysIntInfoDTO 数据传输对象
|
* @param sysIntInfoDO 数据库中的数据对象
|
* @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
|
*/
|
private BaseResult checkIsCanDeleteForDO(SysIntInfoDTO sysIntInfoDTO, SysIntInfoDO sysIntInfoDO) {
|
SysIntInfoDO tsDO = new SysIntInfoDO();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDTO,tsDO);
|
boService.checkTs(tsDO);
|
if(!checkIsLinked(sysIntInfoDO.getOid())) {
|
return BaseResult.success();
|
}else{
|
return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
|
}
|
}
|
|
/**
|
* 校验是否被引用
|
* @param oid 主键
|
* @throws VciBaseException 被引用的时候会抛出异常
|
*/
|
private boolean checkIsLinked(String oid) throws VciBaseException{
|
//TODO 添加需要校验引用的地方
|
return false;
|
}
|
|
/**
|
* 删除系统集成基础信息
|
* @param sysIntInfoDTO 系统集成基础信息数据传输对象,oid和ts需要传输
|
* @return 删除结果反馈::success:成功,fail:失败
|
* @throws VciBaseException 参数为空,被引用时抛出异常
|
*/
|
@Override
|
public BaseResult deleteSysIntInfo(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
|
VciBaseUtil.alertNotNull(sysIntInfoDTO,"系统集成基础信息数据对象",sysIntInfoDTO.getOid(),"系统集成基础信息的主键");
|
SysIntInfoDO sysIntInfoDO = selectByOid(sysIntInfoDTO.getOid());
|
BaseResult baseResult = checkIsCanDeleteForDO(sysIntInfoDTO,sysIntInfoDO);
|
if(baseResult.isSuccess()) {
|
|
}else{
|
return baseResult;
|
}
|
WebUtil.setPersistence(false);
|
BatchCBO batchCBO_update = new BatchCBO();
|
//执行删除操作
|
BatchCBO batchCBO = sysIntInfoMapper.deleteByPrimaryKey(sysIntInfoDO.getOid());
|
batchCBO_update.copyFromOther(batchCBO);
|
List<SysIntHeaderDO> sysIntHeaderDOS=sysIntHeaderDaoI.selectBySysinfoOid(sysIntInfoDO.getOid());
|
if(!CollectionUtils.isEmpty(sysIntHeaderDOS)){
|
List<String>headerIdList=new ArrayList<>();
|
sysIntHeaderDOS.stream().forEach(sysIntHeaderDO -> {
|
headerIdList.add(sysIntHeaderDO.getOid());
|
});
|
BatchCBO headerBO=sysIntHeaderDaoI.batchDeleteByOids(headerIdList);
|
batchCBO_update.copyFromOther(headerBO);
|
}
|
List<SysIntParamDO> sysIntParamDOS=sysIntParamDaoI.selectBySysinfoOid (sysIntInfoDO.getOid());
|
if(!CollectionUtils.isEmpty(sysIntParamDOS)){
|
List<String>paramIdList=new ArrayList<>();
|
sysIntParamDOS.stream().forEach(sysIntParamDO -> {
|
paramIdList.add(sysIntParamDO.getOid());
|
});
|
BatchCBO paramBO= sysIntParamDaoI.batchDeleteByOids(paramIdList);
|
batchCBO_update.copyFromOther(paramBO);
|
}
|
WebUtil.setPersistence(true);
|
boService.persistenceBatch(batchCBO_update);//一起执行保存
|
return (batchCBO_update!=null && batchCBO_update.getDeleteCbos() !=null &&batchCBO_update.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
|
}
|
|
/**
|
* 主键获取系统集成基础信息
|
* @param oid 主键
|
* @return 系统集成基础信息显示对象
|
* @throws VciBaseException 参数为空,数据不存在时会抛出异常
|
*/
|
@Override
|
public SysIntInfoVO getObjectByOid(String oid) throws VciBaseException{
|
|
SysIntInfoDO sysIntInfoDO= selectByOid(oid);
|
List<SysIntHeaderDO> sysIntHeaderDOS=sysIntHeaderDaoI.selectBySysinfoOid(oid.trim());
|
List<SysIntParamDO> sysIntParamDOS=sysIntParamDaoI.selectBySysinfoOid(oid.trim());
|
return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
|
}
|
|
/**
|
* 主键查询数据对象
|
* @param oid 主键
|
* @return 数据对象
|
* @throws VciBaseException 参数为空,并且数据不存在的时候会抛出异常
|
*/
|
private SysIntInfoDO selectByOid(String oid) throws VciBaseException{
|
VciBaseUtil.alertNotNull(oid,"主键");
|
SysIntInfoDO sysIntInfoDO = sysIntInfoMapper.selectByPrimaryKey(oid.trim());
|
if(sysIntInfoDO == null || StringUtils.isBlank(sysIntInfoDO.getOid())){
|
throw new VciBaseException(DATA_OID_NOT_EXIST);
|
}
|
return sysIntInfoDO;
|
}
|
|
/**
|
* 主键批量获取系统集成基础信息
|
* @param oidCollections 主键集合,但是受性能影响,建议一次查询不超过10000个
|
* @return 系统集成基础信息显示对象
|
* @throws VciBaseException 查询出现异常时会抛出
|
*/
|
@Override
|
public Collection<SysIntInfoVO> listSysIntInfoByOids(Collection<String> oidCollections) throws VciBaseException{
|
VciBaseUtil.alertNotNull(oidCollections,"数据对象主键集合");
|
List<SysIntInfoDO> sysIntInfoDOList = listSysIntInfoDOByOidCollections(oidCollections);
|
return sysIntInfoDO2VOs(sysIntInfoDOList);
|
}
|
|
/**
|
* 使用主键集合查询数据对象
|
* @param oidCollections 主键的集合
|
* @return 数据对象列表
|
*/
|
private List<SysIntInfoDO> listSysIntInfoDOByOidCollections(Collection<String> oidCollections){
|
List<SysIntInfoDO> sysIntInfoDOList = new ArrayList<SysIntInfoDO>();
|
if(!CollectionUtils.isEmpty(oidCollections)){
|
Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
|
for(Collection<String> oids: oidCollectionsList){
|
List<SysIntInfoDO> tempDOList = sysIntInfoMapper.selectByPrimaryKeyCollection(oids);
|
Set<String> oidSet = tempDOList.stream().map(SysIntInfoDO::getTargetSystemOid).collect(Collectors.toSet());
|
oidSet.addAll(tempDOList.stream().map(SysIntInfoDO::getSourceSystemOid).collect(Collectors.toSet()));
|
List<SysIntBaseVO> baseVOList = (List<SysIntBaseVO>) sysIntBaseService.listSysIntBaseByOids(oidSet);
|
matchSysOid2BuildInfoDO(tempDOList,baseVOList);
|
if(!CollectionUtils.isEmpty(tempDOList)){
|
sysIntInfoDOList.addAll(tempDOList);
|
}
|
}
|
}
|
return sysIntInfoDOList;
|
}
|
|
|
|
/**
|
* 参照系统集成基础信息列表
|
* @param conditionMap 查询条件
|
* @param pageHelper 分页和排序
|
* @return 系统集成基础信息显示对象列表,生效的内容
|
* @throws VciBaseException 查询条件和分页出错的时候会抛出异常
|
*/
|
@Override
|
public DataGrid<SysIntInfoVO> refDataGridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
|
if(conditionMap == null){
|
conditionMap = new HashMap<String, String>();
|
}
|
return gridSysIntInfo(conditionMap,pageHelper);
|
}
|
|
/**
|
* 当前接口信息是否有使用目标信息
|
* @param sysOid 系统Oid
|
* @param authorityOid 认证方式Oid
|
* @return true = 在使用 ;false = 未使用
|
* @throws VciBaseException 查询条件和分页出错的时候会抛出异常
|
*/
|
@Override
|
public boolean isAlreadyUse(String sysOid, String authorityOid) throws VciBaseException {
|
Map<String,String> conditionMap = new HashMap<>();
|
if (StringUtils.isNotBlank(sysOid)){
|
conditionMap.put("sourceSystemOid",sysOid);
|
Long countSource = sysIntInfoMapper.countByCondition(conditionMap);
|
if (countSource > 0){
|
return true;
|
}
|
conditionMap.clear();
|
conditionMap.put("targetSystemOid",sysOid);
|
Long countTarget = sysIntInfoMapper.countByCondition(conditionMap);
|
if (countTarget > 0){
|
return true;
|
}
|
conditionMap.clear();
|
}
|
if (StringUtils.isNotBlank(authorityOid)){
|
conditionMap.put("authorityOid",authorityOid);
|
Long countAuthority = sysIntInfoMapper.countByCondition(conditionMap);
|
if (countAuthority > 0){
|
return true;
|
}
|
}
|
return false;
|
}
|
|
//=========以下系统参数和验证信息
|
|
/**
|
* 根据系统信息查询接口param
|
* @param sysInfoOid
|
* @return
|
*/
|
@Override
|
public List<SysIntParamDO> getParamsBySystemInfoOid(String sysInfoOid){
|
VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(SysIntParamDO.class);
|
queryWrapper.addQueryMap("infoOid",sysInfoOid);
|
queryWrapper.addQueryMap("usedflag", MdmDuckingConstant.FLAG_TRUE);
|
List<SysIntParamDO> all_params = sysIntParamDaoI.selectByWrapper(queryWrapper);
|
return all_params;
|
}
|
|
/**
|
* 1、先删除以前所有param
|
* 2、再查询传入的所有param
|
* @return
|
*/
|
@Override
|
public BaseResult updateParams(String sysInfoOid,List<SysIntParamDO> params){
|
|
//先作废所有的params_old
|
List<SysIntParamDO> params_old = getParamsBySystemInfoOid(sysInfoOid);
|
for (SysIntParamDO sysIntParamDO:params_old){
|
sysIntParamDO.setUsedflag(MdmDuckingConstant.FLAG_FAIL);
|
}
|
|
WebUtil.setPersistence(false);//不执行保存
|
BatchCBO batchCBO_update = new BatchCBO();
|
if(params_old.size()!=0){
|
batchCBO_update = sysIntParamDaoI.batchUpdate(params_old);
|
}
|
|
if(params!=null&¶ms.size()!=0) {
|
//再新增params
|
for(SysIntParamDO sysIntParamDOi:params){
|
sysIntParamDOi.setUsedflag(MdmDuckingConstant.FLAG_TRUE);
|
}
|
BatchCBO batchCBO_insert = sysIntParamDaoI.batchInsert(params);
|
batchCBO_update.copyFromOther(batchCBO_insert);
|
}
|
|
WebUtil.setPersistence(true);//执行保存
|
boService.persistenceBatch(batchCBO_update);//一起执行保存
|
return BaseResult.success("保存成功!");
|
}
|
|
/**
|
* 根据系统信息查询接口header
|
* @param sysInfoOid
|
* @return
|
*/
|
@Override
|
public List<SysIntHeaderDO> getHeadersBySystemInfoOid(String sysInfoOid){
|
VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(SysIntHeaderDO.class);
|
queryWrapper.addQueryMap("infoOid",sysInfoOid);
|
queryWrapper.addQueryMap("usedflag", MdmDuckingConstant.FLAG_TRUE);
|
List<SysIntHeaderDO> all_headers = sysIntHeaderDaoI.selectByWrapper(queryWrapper);
|
return all_headers;
|
}
|
|
/**
|
* 1、先删除以前所有header
|
* 2、再查询传入的所有header
|
* @return
|
*/
|
@Override
|
public BaseResult updateHeaders(String sysInfoOid,List<SysIntHeaderDO> headers){
|
//先作废所有的headers_old
|
List<SysIntHeaderDO> headers_old = getHeadersBySystemInfoOid(sysInfoOid);
|
for (SysIntHeaderDO sysIntHeaderDO:headers_old){
|
sysIntHeaderDO.setUsedflag(MdmDuckingConstant.FLAG_FAIL);
|
}
|
|
WebUtil.setPersistence(false);//不执行保存
|
BatchCBO batchCBO_update = new BatchCBO();
|
if(headers_old.size()!=0){
|
batchCBO_update = sysIntHeaderDaoI.batchUpdate(headers_old);
|
}
|
|
if(headers!=null&&headers.size()!=0) {
|
//再新增headers
|
for(SysIntHeaderDO sysIntHeaderDO:headers){
|
sysIntHeaderDO.setUsedflag(MdmDuckingConstant.FLAG_TRUE);
|
}
|
BatchCBO batchCBO_insert = sysIntHeaderDaoI.batchInsert(headers);
|
batchCBO_update.copyFromOther(batchCBO_insert);
|
}
|
|
WebUtil.setPersistence(true);//执行保存
|
boService.persistenceBatch(batchCBO_update);//一起执行保存
|
return BaseResult.success("保存成功!");
|
}
|
|
@Override
|
public List<SysIntInfoDO> getSysInfoByClassifyOid(String[] classifyOids) {
|
return null;
|
}
|
|
/***
|
*设置是否启用/停用
|
* @param sysInfoStatusDTO
|
* @return
|
*/
|
@Override
|
public BaseResult updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO){
|
VciBaseUtil.alertNotNull(sysInfoStatusDTO.getOid(),"数据对象",sysInfoStatusDTO.getOid(),"系统集成基础信息主键");
|
SysIntInfoDO sysIntInfoDO = selectByOid(sysInfoStatusDTO.getOid());
|
try {
|
sysIntInfoDO.setTs(VciDateUtil.str2Date(sysInfoStatusDTO.getTs(), VciDateUtil.DateTimeFormat));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
if(sysInfoStatusDTO.getUpdate().equals("disable")) {
|
sysIntInfoDO.setUsedflag("false");
|
}else{
|
sysIntInfoDO.setUsedflag("true");
|
}
|
sysIntInfoMapper.updateByPrimaryKey(sysIntInfoDO);
|
return BaseResult.success();
|
}
|
|
/***
|
* 推送分类/数据
|
* @param sysIntInfoDTO
|
* @return
|
* @throws VciBaseException
|
*/
|
@Override
|
public BaseResult pushData(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException {
|
VciBaseUtil.alertNotNull(sysIntInfoDTO,"数据对象",sysIntInfoDTO.getOid(),"系统集成基础信息主键");
|
boolean issuccess=false;
|
String type="数据推送";
|
if(sysIntInfoDTO.getPushType().equalsIgnoreCase("1")){//推送数据
|
pushDockingTasks(sysIntInfoDTO);
|
}else if(sysIntInfoDTO.getPushType().equalsIgnoreCase("2")){//推送分类
|
issuccess= pushClsfDatas(sysIntInfoDTO);
|
type="分类推送";
|
}
|
return issuccess?BaseResult.successMsg(type+"成功!"):BaseResult.successMsg(type+"失败!");
|
}
|
private BaseResult pushDockingTasks(SysIntInfoDTO sysIntInfoDTO) {
|
String msg="数据推送到定时任务成功!";
|
try {
|
SysIntInfoVO sysIntInfoVO = getObjectByOid(sysIntInfoDTO.getOid());
|
String codeClassifyOid = sysIntInfoVO.getClassifyoid();
|
CodeClassifyTemplateVO templateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(codeClassifyOid);
|
CodeClassifyVO topClassifyVO = codeClassifyServiceI.getTopClassifyVO(codeClassifyOid);
|
String btmTypeId = topClassifyVO.getBtmtypeid();
|
if (StringUtils.isBlank(btmTypeId)) {
|
return BaseResult.fail("这个分类所属顶层分类没有添加业务类型");
|
}
|
List<CodeClassifyVO> codeClassifyIdPathVOS = codeClassifyServiceI.listChildrenClassify(topClassifyVO.getOid(), true, "id", false);
|
List<CodeClassifyVO> codeClassifynamePathVOS = codeClassifyServiceI.listChildrenClassify(topClassifyVO.getOid(), true, "name", false);
|
Map<String/**分类oid**/, String/**分类代号链接符**/> clsfOidIdMap = codeClassifyIdPathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 1).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
|
Map<String/**分类oid**/, String/**分类名称链接符**/> clsfOidNameMap = codeClassifynamePathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 2).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
|
|
PageHelper pageHelper = new PageHelper();
|
pageHelper.setPage(1);
|
pageHelper.setLimit(1000000);
|
pageHelper.setStart(0);
|
HashMap<String, String> conditionMap = new HashMap<>();
|
if (!codeClassifyServiceI.checkHasChild(codeClassifyOid)) {
|
conditionMap.put(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
|
} else {
|
conditionMap.put(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
|
+ " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
|
"' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
|
}
|
conditionMap.put("islastr", "1");
|
conditionMap.put("islastv", "1");
|
List<String> lcstatusList = new ArrayList<>(Arrays.asList(new String[]{"TakeBack", "Released", "Disabled"}));
|
conditionMap.put("lcstatus", QueryOptionConstant.IN + VciBaseUtil.toInSql(lcstatusList.toArray(new String[0])));
|
|
CodeTemplateAttrSqlBO sqlBO = mdmEngineServiceI.getSqlByTemplateVO(btmTypeId, templateVO, conditionMap, pageHelper);
|
List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
|
List<DockingTaskDO> dockingTaskDO_insert = new ArrayList<>();
|
if (!CollectionUtils.isEmpty(maps)) {
|
maps.stream().forEach(map -> {
|
String btmoid = map.get("oid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("oid".toUpperCase(Locale.ROOT)).toString();//数据oid
|
String sendtype = map.get("lcstatus".toUpperCase(Locale.ROOT)) == null ? "" : map.get("lcstatus".toUpperCase(Locale.ROOT)).toString();//数据推送类型
|
String id = map.get("id".toUpperCase(Locale.ROOT)) == null ? "" : map.get("id".toUpperCase(Locale.ROOT)).toString();//编码
|
String btmid = topClassifyVO.getBtmtypeid();//数据业务类型
|
String classifyoid = map.get("codeclsfid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("codeclsfid".toUpperCase(Locale.ROOT)).toString();//数据所在的分类id
|
String date2Str = VciDateUtil.date2Str(new Date(), VciDateUtil.DateTimeFormatStr);
|
DockingTaskDO dockingTaskDO = new DockingTaskDO();
|
dockingTaskDO.setOid(date2Str +"_"+id);
|
dockingTaskDO.setSendflag(MdmDuckingConstant.SEND_FLAG_FALSE);
|
dockingTaskDO.setId(id);//编码
|
dockingTaskDO.setUniquecode("");
|
dockingTaskDO.setBtmoid(btmoid);//数据oid
|
dockingTaskDO.setBtmid(btmid);//数据业务类型id
|
if (clsfOidIdMap.containsKey(classifyoid)) {
|
String classifyid = clsfOidIdMap.get(classifyoid);
|
dockingTaskDO.setClassifyid(classifyid);//数据在分类id
|
}
|
dockingTaskDO.setClassifyoid(classifyoid);//数据所在分类oid
|
if (clsfOidNameMap.containsKey(classifyoid)) {
|
String classifyname = clsfOidNameMap.get(classifyoid);
|
dockingTaskDO.setClassifyname(classifyname);//数据所在分类名称
|
}
|
dockingTaskDO.setSendtype(sendtype);//数据推送类型
|
//String dataoid=redisService.getUUIDEveryDay();
|
dockingTaskDO.setDataoid(date2Str +"_"+ btmoid);
|
//intinfo
|
dockingTaskDO.setSysinfooid(sysIntInfoVO.getOid());//intinfo的oid
|
dockingTaskDO.setSystemoid(sysIntInfoVO.getSysbaseoid());//系统oid
|
dockingTaskDO.setSystemcode(sysIntInfoVO.getSysbaseid());//系统编码
|
dockingTaskDO.setSystemname(sysIntInfoVO.getSysbasename());//系统name
|
dockingTaskDO_insert.add(dockingTaskDO);
|
});
|
}
|
BatchCBO bo = dockingTaskDaoI.batchInsert(dockingTaskDO_insert);
|
|
}catch (Throwable e){
|
msg="数据推送到定时任务失败!";
|
logger.error("数据推送到定时任务失败!"+e);
|
e.printStackTrace();
|
}finally {
|
logger.info(msg);
|
return BaseResult.successMsg("数据推送到定时任务成功!");
|
}
|
}
|
private String reverseOrderByList(String StringValue, CodeClassifyVO topClassifyVO,int type){
|
String[] s=StringValue.split("#");
|
StringBuffer sb=new StringBuffer();
|
List<String> list=new ArrayList<>(Arrays.asList(s));
|
Collections.reverse(list);
|
System.out.println(list.toString());
|
for (String o:list){
|
if(StringUtils.isNotBlank(o)){
|
sb.append(o).append(",");
|
}
|
}
|
sb.append(type==1?topClassifyVO.getId():topClassifyVO.getName());
|
System.out.println(sb.toString());
|
|
return sb.toString();
|
}
|
/***
|
* 分类推送集成
|
* @param sysIntInfoDTO
|
* @return
|
*/
|
private boolean pushClsfDatas(SysIntInfoDTO sysIntInfoDTO){
|
SysIntInfoVO sysIntInfoVO= getObjectByOid(sysIntInfoDTO.getOid());
|
String classOid= sysIntInfoVO.getClassifyoid();
|
List<CodeClassifyVO> listChildrenClassify= codeClassifyServiceI.listChildrenClassify(classOid,true,"id",false);
|
List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
|
JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
|
NodeDataDTO nodeDataDTO=new NodeDataDTO();
|
//每个task一个事务,开启
|
WebUtil.setPersistence(false);
|
BatchCBO batchCBO = new BatchCBO();
|
boolean isSuccess=false;
|
try {
|
String sendString = "";
|
if (!CollectionUtils.isEmpty(listChildrenClassify)) {
|
listChildrenClassify.stream().forEach(codeClassifyVO -> {
|
NodeClassifyDTO nodeClassifyDTO = new NodeClassifyDTO();
|
nodeClassifyDTO.setClassCode(codeClassifyVO.getId());//分类代号
|
nodeClassifyDTO.setDescription(codeClassifyVO.getDescription());//分类描述
|
nodeClassifyDTO.setFullPathName(codeClassifyVO.getPath());//全路径
|
nodeClassifyDTO.setLcStatus(codeClassifyVO.getLcStatus());//状态
|
nodeClassifyDTO.setPid(codeClassifyVO.getId());//父id节点
|
nodeClassifyDTO.setId(codeClassifyVO.getOid());//分类oid
|
nodeClassifyDTO.setName(codeClassifyVO.getName());//分类名称
|
nodeClassifyDTOList.add(nodeClassifyDTO);
|
});
|
NodeLibraryDTO nodeLibraryDTO = new NodeLibraryDTO();
|
nodeLibraryDTO.setClassify(nodeClassifyDTOList);
|
CodeClassifyVO rootClassify = codeClassifyServiceI.getTopClassifyVO(classOid);
|
nodeLibraryDTO.setId(rootClassify.getOid());
|
nodeLibraryDTO.setName(rootClassify.getName());
|
nodeDataDTO.setLibrary(nodeLibraryDTO);
|
jsonRootDataDTO.setData(nodeDataDTO);
|
String paramType = sysIntInfoDTO.getParamtype();//xml/json
|
if (paramType.equals(MdmDuckingConstant.DATATYPE_JSON)) {
|
Object object = JSONObject.toJSON(jsonRootDataDTO);
|
sendString = object.toString();
|
} else {
|
//组织返回接口信息
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(NodeDataDTO.class);
|
xStream.autodetectAnnotations(true);
|
sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO);
|
}
|
//调用接口
|
callInterface(sendString, sysIntInfoVO, batchCBO);
|
isSuccess=true;
|
}
|
}catch (Throwable e){
|
e.printStackTrace();
|
isSuccess=false;
|
}finally {
|
//每一个task一个事物
|
WebUtil.setPersistence(true);
|
boService.persistenceBatch(batchCBO);
|
return true;
|
}
|
}
|
/***
|
* 调用接口
|
* @param sysIntInfoVO
|
* @throws Throwable
|
*/
|
private void callInterface(String sendString , SysIntInfoVO sysIntInfoVO,BatchCBO batchCBO) throws Throwable{
|
String paramString = "";
|
|
String backString = "";
|
String msg="";
|
String url = sysIntInfoVO.getRequesturl();//url
|
List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>();
|
try {
|
String type = sysIntInfoVO.getInterfacetype().toLowerCase(Locale.ROOT);//get/post/webserver/corba
|
String paramType = sysIntInfoVO.getParamtype();//xml/json
|
String returnType = sysIntInfoVO.getReturntype();//xml/json
|
String requestmethod= sysIntInfoVO.getRequestmethod();
|
String interfaceFunction = sysIntInfoVO.getInterfaceFunction();//主要是webservice的方法名
|
String namespace = sysIntInfoVO.getNamespace();//namespace
|
String soapaction = sysIntInfoVO.getSoapaction();//soapaction
|
String targName = sysIntInfoVO.getTargName();//targName
|
String cxfaxis = sysIntInfoVO.getCxfaxis();//webservice是cxf/axis
|
//查询param
|
List<SysIntParamVO> sysIntParamVOList = sysIntInfoVO.getSysIntParamVOs();
|
//查询header
|
List<SysIntHeaderVO> sysIntHeaderVOList =sysIntInfoVO.getSysIntHeaderVOs();
|
if(type.equals(MdmDuckingConstant.URLTYPE_HTTP)) {
|
if (requestmethod.equals(MdmDuckingConstant.URLTYPE_GET)) {//GET请求
|
String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
|
//拼接param
|
for (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
|
sendurl = sendurl + "&" + sysIntParamVO.getParamkey() + "=" + sysIntParamVO.getParamvalue();
|
}
|
paramString = sendurl;
|
backString = HttpUtils.get(sendurl);
|
} else if (requestmethod.equals(MdmDuckingConstant.URLTYPE_POST)) {//POST请求
|
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
|
if(!CollectionUtils.isEmpty(sysIntParamVOList)) {
|
for (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
|
params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
|
}
|
}
|
params.add(DATA_PARAM_NAME,sendString);
|
paramString = params.toString();
|
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
|
if(!CollectionUtils.isEmpty(sysIntHeaderVOList)) {
|
for (SysIntHeaderVO sysIntHeaderVO : sysIntHeaderVOList) {
|
headers.add(sysIntHeaderVO.getHeaderkey(), sysIntHeaderVO.getHeaderalue());
|
}
|
}
|
backString = HttpUtils.post(url, params, headers);
|
}
|
if(backString.startsWith("\"")){
|
backString=backString.substring(backString.indexOf("\"")+1);
|
}
|
if(backString.endsWith("\"")){
|
backString=backString.substring(0,backString.lastIndexOf("\""));
|
}
|
if(backString.contains("\n")){
|
String res="\n";
|
backString= backString.replaceAll(res,"");
|
}
|
if(backString.contains("\\")){
|
String res="\\\\\"";
|
backString= backString.replaceAll(res,"\"").trim();
|
}
|
}else if (type.equals(MdmDuckingConstant.URLTYPE_WEBSERVICE)) {//webserver请求
|
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
|
for (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
|
params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
|
}
|
paramString = sendString;
|
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
|
for (SysIntHeaderVO sysIntHeaderVO : sysIntHeaderVOList) {
|
headers.add(sysIntHeaderVO.getHeaderkey(), sysIntHeaderVO.getHeaderalue());
|
}
|
backString = WsErpClientUtil.sendMsg(url, namespace, soapaction, interfaceFunction, targName, sendString, 10000);
|
|
} else {//corba接口
|
//paramString=sendString;
|
// backString = jacorbClient.getBOFactoryService().sendCode(sendString);
|
}
|
|
ResultJsonDTO resultJsonDTO = new ResultJsonDTO();
|
if(returnType.equals(MdmDuckingConstant.DATATYPE_JSON)){
|
resultJsonDTO =JSONObject.toJavaObject(JSONObject.parseObject(backString), ResultJsonDTO.class);
|
}else {
|
//组织返回接口信息
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(ResultNodeDataDTO.class);
|
xStream.autodetectAnnotations(true);
|
ResultNodeDataDTO resultNodeDataDTO = (ResultNodeDataDTO) xStream.fromXML(backString);
|
resultJsonDTO.setData(resultNodeDataDTO);
|
}
|
ResultNodeDataDTO resultNodeDataDTO=resultJsonDTO.getData();
|
resultNodeObjectDTOS=resultNodeDataDTO.getObject();
|
|
}catch (Throwable e){
|
msg="调用接口失败:"+e;
|
e.printStackTrace();
|
// throw new Throwable("调用接口失败:"+e);
|
ResultNodeObjectDTO resultNodeObjectDTO=new ResultNodeObjectDTO();
|
resultNodeObjectDTO.setErroid("1");
|
resultNodeObjectDTO.setMsg(msg);
|
resultNodeObjectDTO.setCode(sysIntInfoVO.getClassifyid());
|
resultNodeObjectDTO.setOid(sysIntInfoVO.getClassifyoid());
|
resultNodeObjectDTOS.add(resultNodeObjectDTO);
|
}finally {
|
boolean isSend = false;
|
for (ResultNodeObjectDTO resultNodeObjectDTO:resultNodeObjectDTOS){
|
String erroid = resultNodeObjectDTO.getErroid();
|
msg = resultNodeObjectDTO.getMsg();
|
if("0".equals(erroid)){
|
isSend = true;
|
}else if("1".equals(erroid)){
|
isSend=false;
|
}else{
|
isSend=false;
|
}
|
DockingLogeDO dockingLogeDO = new DockingLogeDO();
|
String oid=redisService.getUUIDEveryDay();
|
dockingLogeDO.setOid(oid);
|
dockingLogeDO.setSystemcode(sysIntInfoVO.getSysbaseid());
|
dockingLogeDO.setSystemname(sysIntInfoVO.getSysbasename());
|
dockingLogeDO.setSystemoid(sysIntInfoVO.getSysbaseoid());
|
dockingLogeDO.setClassifyoid(sysIntInfoVO.getClassifyoid());
|
dockingLogeDO.setClassifyid(sysIntInfoVO.getClassifyid());
|
dockingLogeDO.setClassifyname(sysIntInfoVO.getClassifyname());
|
dockingLogeDO.setId(sysIntInfoVO.getId());
|
dockingLogeDO.setUniquecode("");
|
dockingLogeDO.setInterfacestatus(isSend?"true":"false");
|
dockingLogeDO.setParamstring(paramString);
|
dockingLogeDO.setType(MdmDuckingConstant.DATA_LOGE_OUT);
|
dockingLogeDO.setReturnstring(backString);
|
dockingLogeDO.setMsg(msg);
|
logger.info("集成推送数据,systemcode:"+sysIntInfoVO.getSysbaseid()+",systemname:"+sysIntInfoVO.getSysbasename()+",url:"+url+",param:"+paramString+",e:"+msg);
|
BatchCBO dockingLogeDOBo = dockingLogeDaoI.insert(dockingLogeDO);
|
batchCBO.copyFromOther(dockingLogeDOBo);
|
}
|
}
|
}
|
|
private void initData(String rootClassOid , Map<String,String> clsfOidIdMap,Map<String,String> clsfOidNameMap){
|
TreeQueryObject treeQueryObject=new TreeQueryObject();
|
treeQueryObject.setParentOid(rootClassOid);
|
treeQueryObject.setQueryAllLevel(true);
|
List<CodeClassifyDO> codeClassifyDOList=codeClassifyServiceI.selectCodeClassifyDOByTree(treeQueryObject);
|
if(!CollectionUtils.isEmpty(codeClassifyDOList)){
|
codeClassifyDOList.stream().forEach(codeClassify->{
|
String id=codeClassify.getId();
|
String name=codeClassify.getName();
|
});
|
|
}
|
}
|
}
|