package com.vci.ubcs.code.service.impl;
|
|
import com.alibaba.cloud.commons.lang.StringUtils;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.thoughtworks.xstream.XStream;
|
import com.thoughtworks.xstream.io.xml.DomDriver;
|
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
|
import com.vci.ubcs.code.dto.CodeOrderDTO;
|
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
|
import com.vci.ubcs.code.entity.*;
|
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
|
import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
|
import com.vci.ubcs.code.mapper.CommonsMapper;
|
import com.vci.ubcs.code.service.*;
|
import com.vci.ubcs.code.util.ClientBusinessObject;
|
import com.vci.ubcs.code.util.gennerAttrMapUtil;
|
import com.vci.ubcs.code.vo.pagemodel.*;
|
import com.vci.ubcs.code.vo.webserviceModel.apply.*;
|
import com.vci.ubcs.code.vo.webserviceModel.attrmap.*;
|
import com.vci.ubcs.code.vo.webserviceModel.attrmap.DataObjectVO;
|
import com.vci.ubcs.code.vo.webserviceModel.classify.*;
|
import com.vci.ubcs.code.vo.webserviceModel.data.*;
|
import com.vci.ubcs.code.vo.webserviceModel.result.json.*;
|
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultClassfyVO;
|
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
|
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultSystemVO;
|
import com.vci.ubcs.code.webService.annotation.VciWebservice;
|
import com.vci.ubcs.code.webService.config.AttributeMapConfig;
|
import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
|
import com.vci.ubcs.omd.feign.IBtmTypeClient;
|
import com.vci.ubcs.omd.vo.BtmTypeVO;
|
import com.vci.ubcs.starter.revision.model.BaseModel;
|
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
|
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
|
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
|
import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
|
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
|
import com.vci.ubcs.starter.web.util.VciBaseUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springblade.core.tool.api.R;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.stream.Collectors;
|
|
import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
|
import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_CLASSIFY_SEC;
|
|
/***
|
* 统一接口
|
*/
|
@Service
|
@Slf4j
|
@VciWebservice(path = "/universalInterface")
|
public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI {
|
|
@Autowired(required = false)
|
private AttributeMapConfig attributeMapConfig;
|
/**
|
* 缓存服务
|
*/
|
//@Autowired
|
//private RedisService redisService;
|
/**
|
* 主题库分类的服务
|
*/
|
@Autowired(required = false)
|
private ICodeClassifyService classifyService;
|
|
/**
|
* 业务类型的服务
|
*/
|
@Autowired
|
private IBtmTypeClient btmTypeClient;
|
|
/**
|
* 通用查询
|
*/
|
@Resource
|
private CommonsMapper commonsMapper;
|
|
/**
|
* 主数据引擎的服务
|
*/
|
@Resource
|
private MdmEngineService engineService;
|
|
/**
|
* 密级的服务
|
*/
|
|
@Resource
|
private MdmIOService mdmIOService;
|
|
@Autowired
|
private ICodeClassifyValueService codeClassifyValueService;
|
/***
|
* 集成接口日志服务的配置
|
*/
|
@Resource
|
private IDockingLogeService dockingLogeService;
|
|
private static String separator="##VCI##";
|
private String errorid="0";
|
private String msg="成功";
|
private String objerrorCode="0";
|
private String objerrorMsg="成功";
|
/***
|
* 申请编码接口
|
* @param data 传递的数据参数
|
* @param dataType 标识data是xml格式还是json格式,接口返回数据也是按照这个格式,以下接口类同
|
* @return
|
* @throws Throwable
|
*/
|
@Override
|
public String applyCode(String data, String dataType) throws Throwable {
|
String resultStr = "";
|
String errorid="0";
|
msg="成功";
|
objerrorCode="0";
|
objerrorMsg="成功";
|
log.info("申请编码的数据参数:->"+data);
|
log.info("申请编码的数据类型:->"+dataType);
|
String systemId="";
|
List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>();
|
try {
|
if(StringUtils.isBlank(data)) {
|
errorid="101";
|
throw new Throwable("接口参数:传递为空");
|
}
|
InterParameterVO interParameterVO =new InterParameterVO();
|
//如果dataType是xml则,通过xml序列化成对象形式,如果是json则通过json转换成对象格式
|
try {
|
if ("xml".equals(dataType)) {
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(RootDataVO.class);
|
xStream.autodetectAnnotations(true);
|
RootDataVO rootDataVO = (RootDataVO) xStream.fromXML(data);
|
interParameterVO.setData(rootDataVO);
|
} else {
|
interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class);
|
}
|
}catch (Throwable e){
|
errorid="101";
|
throw new Throwable("接口参数:传入数据参数解析失败");
|
}
|
ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
|
systemId = interParameterVO.getData().getSystemId();
|
UserVO userVo = interParameterVO.getData().getUser();
|
List<ClassfyVO> classVOList = classfysVO.getClassify();
|
InterParameterVO finalInterParameterVO = interParameterVO;
|
|
//这是账号信息
|
SessionInfo sessionInfo = new SessionInfo();
|
sessionInfo.setUserId(userVo.getUserName());
|
sessionInfo.setUserName(userVo.getTrueName());
|
sessionInfo.setIp(userVo.getIp());
|
VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
|
|
String finalSystemId = systemId;
|
classVOList.stream().forEach(classVO -> {
|
log.info("参数:分类COde:" + classVO.getClassCode());
|
LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
|
//获取分类信息
|
try {
|
String libray = classVO.getLibrary();
|
CodeClassifyVO codeClassifyVO = getClassfy(classVO);
|
log.info("end:分类查询完毕");
|
//获取分类模板信息
|
if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
|
objerrorCode="100";
|
throw new Throwable ("根据传输的分类,未获取到分类信息");
|
}
|
CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
|
if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
|
objerrorCode="1";
|
throw new Throwable ("根据传输的分类,未获取MDM系统中对应模板");
|
}
|
log.info("end:模板查询完毕");
|
ApplyDatasVO applyDatasVO = classVO.getObjects();
|
DataObjectVO dataObjectVO = new DataObjectVO();
|
List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
|
).collect(Collectors.toList());
|
this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
|
log.info("end:数据组织完毕");
|
//规则的主键需要去获取
|
CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
|
if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){
|
objerrorCode="1";
|
log.info("classifyFullInfo:"+"根据传输的分类,未获取分类相关信息");
|
throw new Throwable ("根据传输的分类,未获取分类相关信息");
|
}
|
CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
|
if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){
|
objerrorCode="102";
|
throw new Throwable ("根据传输的分类,未获取MDM系统中对应规则");
|
}
|
log.info("end:规则获取完毕");
|
List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(classVO.getSections().getSection(), ruleVO,classifyFullInfo);
|
log.info("end:码段获取完毕");
|
CodeOrderDTO orderDTO = new CodeOrderDTO();
|
orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键
|
orderDTO.setSecDTOList(codeOrderSecDTOList);//分类码段
|
mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs);
|
log.info("end:申请获取完毕");
|
} catch (Throwable e) {
|
XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
|
xmlResultDataObjectDetailDO.setCode("");
|
xmlResultDataObjectDetailDO.setId("");
|
xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
|
xmlResultDataObjectDetailDO.setMsg("编码申请失败:"+e.getMessage());
|
resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
|
e.printStackTrace();
|
}finally {
|
XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
|
resultClassfyVO.setClassCode(classVO.getClassCode());
|
resultClassfyVO.setLibrary(classVO.getLibrary());
|
resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath());
|
resultClassfyVO.setObjects(resultDataObjectDetailDOs);
|
resultClassfyVOList.add(resultClassfyVO);
|
}
|
});
|
XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
|
xmlResultSystemVO.setClassifys(resultClassfyVOList);
|
xmlResultSystemVO.setMsg(msg);
|
xmlResultSystemVO.setErrorid(errorid);
|
resultStr= transferResultXMl(xmlResultSystemVO,dataType);
|
}catch (Throwable e){
|
e.printStackTrace();;
|
msg="申请编码失败:"+e.getMessage();
|
/* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
|
XMLResultSystemVO.setErrorid(errorid);
|
XMLResultSystemVO.setMsg("申请编码失败:->"+e.getMessage());
|
XMLResultSystemVO.setClassifys(resultClassfyVOList);
|
resultStr=transferResultXMl(XMLResultSystemVO,dataType);
|
|
log.error("申请编码失败:->"+e);
|
return resultStr;*/
|
}finally {
|
XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
|
xmlResultSystemVO.setClassifys(resultClassfyVOList);
|
xmlResultSystemVO.setMsg(msg);
|
xmlResultSystemVO.setErrorid(errorid);
|
resultStr= transferResultXMl(xmlResultSystemVO,dataType);
|
final boolean[] issucess = {true};
|
if(!errorid.equals("0")) {
|
issucess[0] = false;
|
}else {
|
if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
|
resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
|
xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
|
if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
|
issucess[0] = false;
|
msg=objec.getMsg();
|
}
|
});
|
});
|
}
|
|
}
|
try {
|
//记录日志
|
this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCode");
|
}catch (Throwable e){
|
e.printStackTrace();
|
}
|
}
|
log.info("返回参数:"+resultStr);
|
|
return resultStr;
|
}
|
|
/***
|
* 统一更新接口(更改状态,更改属性信息)接口
|
* @param data
|
* @param dataType
|
* @return
|
* @throws Throwable
|
*/
|
@Override
|
public String syncEditData(String data, String dataType) throws Throwable {
|
|
String resultStr = "";
|
String errorid="0";
|
msg="成功";
|
String systemId="";
|
objerrorCode="0";
|
objerrorMsg="成功";
|
log.info("更改编码的数据参数:->"+data);
|
log.info("更改编码的数据类型:->"+dataType);
|
List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>();
|
try {
|
if (StringUtils.isBlank(data)) {
|
errorid = "101";
|
throw new Throwable("接口参数:传递为空");
|
}
|
InterParameterVO interParameterVO = new InterParameterVO();
|
//如果dataType是xml则,通过xml序列化成对象形式,如果是json则通过json转换成对象格式
|
try {
|
if ("xml".equals(dataType)) {
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(RootDataVO.class);
|
xStream.autodetectAnnotations(true);
|
RootDataVO rootDataVO = (RootDataVO) xStream.fromXML(data);
|
interParameterVO.setData(rootDataVO);
|
} else {
|
interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class);
|
}
|
} catch (Throwable e) {
|
errorid = "101";
|
throw new Throwable("接口参数:传入数据参数解析失败");
|
|
}
|
ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
|
systemId = interParameterVO.getData().getSystemId();
|
UserVO userVo = interParameterVO.getData().getUser();
|
List<ClassfyVO> classVOList = classfysVO.getClassify();
|
InterParameterVO finalInterParameterVO = interParameterVO;
|
//这是账号信息
|
SessionInfo sessionInfo = new SessionInfo();
|
sessionInfo.setUserId(userVo.getUserName());
|
sessionInfo.setUserName(userVo.getTrueName());
|
sessionInfo.setIp(userVo.getIp());
|
VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
|
String finalSystemId = systemId;
|
classVOList.stream().forEach(classVO->{
|
log.info("参数:分类COde:" + classVO.getClassCode());
|
LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
|
//获取分类信息
|
try {
|
String libray = classVO.getLibrary();
|
CodeClassifyVO codeClassifyVO = getClassfy(classVO);
|
if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
|
objerrorCode="100";
|
throw new Throwable ("根据传输的分类,未获取到分类信息");
|
}
|
log.info("end:分类查询完毕");
|
//获取分类模板信息
|
CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
|
if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
|
objerrorCode="102";
|
throw new Throwable ("根据传输的分类,未获取MDM系统中对应模板");
|
}
|
log.info("end:模板查询完毕");
|
ApplyDatasVO applyDatasVO = classVO.getObjects();
|
DataObjectVO dataObjectVO = new DataObjectVO();
|
//将默认的属性全部替换掉
|
List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
|
).collect(Collectors.toList());
|
this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
|
log.info("end:数据构建完毕");
|
log.info("start:修改数据执行完毕");
|
mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs);
|
log.info("end:修改数据执行完毕");
|
} catch (Throwable e) {
|
XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
|
xmlResultDataObjectDetailDO.setCode("");
|
xmlResultDataObjectDetailDO.setId("");
|
xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
|
xmlResultDataObjectDetailDO.setMsg("编码更改/状态更改/删除:"+e.getMessage());
|
resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
|
e.printStackTrace();
|
}finally {
|
XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
|
resultClassfyVO.setClassCode(classVO.getClassCode());
|
resultClassfyVO.setLibrary(classVO.getLibrary());
|
resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath());
|
resultClassfyVO.setObjects(resultDataObjectDetailDOs);
|
resultClassfyVOList.add(resultClassfyVO);
|
}
|
|
});
|
}catch (Throwable e){
|
e.printStackTrace();;
|
msg="编码更改/状态更改/删除:"+e.getMessage();
|
/* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
|
XMLResultSystemVO.setErrorid(errorid);
|
XMLResultSystemVO.setMsg("申请编码失败:->"+e.getMessage());
|
XMLResultSystemVO.setClassifys(resultClassfyVOList);
|
resultStr=transferResultXMl(XMLResultSystemVO,dataType);
|
|
log.error("申请编码失败:->"+e);
|
return resultStr;*/
|
}finally {
|
XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
|
xmlResultSystemVO.setClassifys(resultClassfyVOList);
|
xmlResultSystemVO.setMsg(msg);
|
xmlResultSystemVO.setErrorid(errorid);
|
resultStr= transferResultXMl(xmlResultSystemVO,dataType);
|
final boolean[] issucess = {true};
|
if(!errorid.equals("0")) {
|
issucess[0] = false;
|
}else {
|
if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
|
resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
|
xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
|
if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
|
issucess[0] = false;
|
msg=objec.getMsg();
|
}
|
});
|
});
|
}
|
|
}
|
try {
|
//记录日志
|
this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "syncEditData");
|
}catch (Throwable e){
|
e.printStackTrace();
|
}
|
}
|
log.info("返回参数:"+resultStr);
|
//存储日志
|
return resultStr;
|
}
|
|
/***
|
* 分类查询
|
* @param data
|
* @param dataType
|
* @return
|
* @throws Throwable
|
*/
|
@Override
|
public String queryClassify(String data, String dataType) throws Throwable {
|
boolean issucess=false;
|
String resultStr = "";
|
String errorid="0";
|
msg="成功";
|
String systemId="";
|
log.info("查询分类的数据参数:->"+data);
|
log.info("查询分类的数据类型:->"+dataType);
|
ResultClassifyVO resultClassifyVO =new ResultClassifyVO();
|
List<ClassifyVO> classifyVOList=new ArrayList<>();
|
ResultData resultData=new ResultData();
|
try {
|
if (StringUtils.isBlank(data)) {
|
errorid = "101";
|
throw new Throwable("接口参数:传递为空");
|
}
|
QueryClassifyVO queryClassifyVO = new QueryClassifyVO();
|
//如果dataType是xml则,通过xml序列化成对象形式,如果是json则通过json转换成对象格式
|
try {
|
if ("xml".equals(dataType)) {
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(QueryData.class);
|
xStream.autodetectAnnotations(true);
|
QueryData queryData = (QueryData) xStream.fromXML(data);
|
queryClassifyVO.setData(queryData);
|
} else {
|
queryClassifyVO = JSONObject.toJavaObject(JSONObject.parseObject(data), QueryClassifyVO.class);
|
}
|
} catch (Throwable e) {
|
errorid = "101";
|
msg="接口参数:传入数据参数解析失败";
|
e.printStackTrace();
|
throw new Throwable("接口参数:传入数据参数解析失败");
|
}
|
QueryData queryData=queryClassifyVO.getData();
|
UserVO userVo=queryData.getUser();
|
systemId=queryData.getSystemId();
|
QueryLibraryVO libraryVO= queryData.getLibrary();
|
String libId= libraryVO.getId();
|
List<String> classifyIdList= libraryVO.getClassifyid();
|
List<CodeClassifyVO> codeClassifyVOS =new ArrayList<>();
|
//这是账号信息
|
//这是账号信息
|
if(userVo!=null) {
|
SessionInfo sessionInfo = new SessionInfo();
|
sessionInfo.setUserId(userVo.getUserName());
|
sessionInfo.setUserName(userVo.getTrueName());
|
sessionInfo.setIp(userVo.getIp());
|
VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
|
}else{
|
errorid = "101";
|
throw new Throwable("接口参数:账号信息获取失败");
|
}
|
if(!CollectionUtils.isEmpty(classifyIdList)){
|
//先简称是否有关联模板,有模板要先删除
|
List<CodeClassify> libIdDos = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().in(CodeClassify::getId, classifyIdList));
|
codeClassifyVOS=classifyService.codeClassifyDO2VOs(libIdDos);
|
}else {
|
List<CodeClassify> libIdDos = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId, libId));
|
String oid= libIdDos.get(0).getOid();
|
TreeQueryObject treeQueryObject=new TreeQueryObject();
|
treeQueryObject.setParentOid(oid);
|
treeQueryObject.setQueryAllLevel(true);
|
codeClassifyVOS=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
|
}
|
LibraryVO libraryVo=new LibraryVO();
|
libraryVo.setId(libId);
|
libraryVo.setName("");
|
if(!CollectionUtils.isEmpty(codeClassifyVOS)){
|
errorid = "0";
|
msg="成功!";
|
codeClassifyVOS.stream().forEach(codeClassifyDO -> {
|
ClassifyVO classifyVO=new ClassifyVO();
|
classifyVO.setId(codeClassifyDO.getOid());
|
classifyVO.setLcStatus(codeClassifyDO.getLcStatus());
|
classifyVO.setClassCode(codeClassifyDO.getId());
|
classifyVO.setDescription(codeClassifyDO.getDescription());
|
classifyVO.setName(codeClassifyDO.getName());
|
classifyVO.setPid(codeClassifyDO.getParentcodeclassifyoid());
|
classifyVO.setFullPathName(codeClassifyDO.getPath());
|
classifyVOList.add(classifyVO);
|
});
|
libraryVo.setClassify(classifyVOList);
|
}else{
|
errorid = "100";
|
msg="未查询到相关的分类信息";
|
}
|
issucess=true;
|
resultData.setLibrary(libraryVo);
|
}catch (Throwable e){
|
e.printStackTrace();;
|
msg="查询分类失败:"+e.getMessage();
|
}finally {
|
resultData.setErrorid(errorid);
|
resultData.setMsg(msg);
|
resultClassifyVO.setResultData(resultData);
|
}
|
if(dataType.equals("xml")){
|
//组织返回接口信息
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(XMLResultSystemVO.class);
|
xStream.autodetectAnnotations(true);
|
resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultData);
|
|
}else{
|
Object object = JSONObject.toJSON(resultClassifyVO);
|
resultStr = object.toString();
|
}
|
try {
|
//记录日志
|
this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
|
}catch (Throwable e){
|
e.printStackTrace();
|
}
|
log.info("返回参数:"+resultStr);
|
return resultStr;
|
}
|
|
/***
|
* 数据查询
|
* @param data
|
* @param dataType
|
* @return
|
* @throws Throwable
|
*/
|
@Override
|
public String queryData(String data, String dataType) throws Throwable {
|
boolean issucess=false;
|
String resultStr = "";
|
String errorid="0";
|
msg="成功";
|
String systemId="";
|
log.info("查询分类的数据参数:->"+data);
|
log.info("查询分类的数据类型:->"+dataType);
|
DataCondtionsVO dataCondtionsVO=new DataCondtionsVO();
|
ResultDataVO resultDataVO=new ResultDataVO();
|
try {
|
try {
|
if ("xml".equals(dataType)) {
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(CondtionsVO.class);
|
xStream.autodetectAnnotations(true);
|
CondtionsVO condtionsVO = (CondtionsVO) xStream.fromXML(data);
|
dataCondtionsVO.setCondtions(condtionsVO);
|
} else {
|
dataCondtionsVO = JSONObject.toJavaObject(JSONObject.parseObject(data), DataCondtionsVO.class);
|
}
|
} catch (Throwable e) {
|
errorid = "101";
|
msg = "接口参数:传入数据参数解析失败";
|
e.printStackTrace();
|
throw new Throwable("接口参数:传入数据参数解析失败");
|
}
|
CondtionsVO condtionsVO=dataCondtionsVO.getCondtions();
|
systemId=condtionsVO.getSystemId();
|
UserVO userVo=condtionsVO.getUser();
|
CondtionVO condtionVO= condtionsVO.getCondtion();
|
SessionInfo sessionInfo = new SessionInfo();
|
sessionInfo.setUserId(userVo.getUserName());
|
sessionInfo.setUserName(userVo.getTrueName());
|
sessionInfo.setIp(userVo.getIp());
|
VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
|
|
String classCode=condtionVO.getClassCode();
|
String library= condtionVO.getLibrary();
|
String queryFileds= condtionVO.getQueryFileds();
|
if(StringUtils.isBlank(library)){
|
errorid = "101";
|
msg = "接口参数:library 为null";
|
throw new Throwable(msg);
|
}
|
|
//先简称是否有关联模板,有模板要先删除
|
|
List<CodeClassify> libIdDos =classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId,library));
|
if(!CollectionUtils.isEmpty(libIdDos)){
|
CodeClassify libCodeClassify=libIdDos.get(0);
|
List<CodeClassify> codeClassifyList=classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId,classCode));
|
if(!CollectionUtils.isEmpty(codeClassifyList)){
|
final CodeClassify[] currentCodeClassify = {null};
|
codeClassifyList.stream().forEach(codeClassify -> {
|
CodeClassifyVO codeClassifyVO= classifyService.getTopClassifyVO(codeClassify.getOid());
|
if(codeClassifyVO.getOid().equals(libCodeClassify.getOid())){
|
currentCodeClassify[0] =codeClassify;
|
}
|
});
|
if(currentCodeClassify[0]==null){
|
errorid = "101";
|
msg = "接口参数:classCode 未查询到对应的分类信息";
|
throw new Throwable(msg);
|
}
|
List<CodeClassifyVO> dataCodeClassifyVOList =new ArrayList<>();
|
String oid= currentCodeClassify[0].getOid();
|
TreeQueryObject treeQueryObject=new TreeQueryObject();
|
treeQueryObject.setParentOid(oid);
|
treeQueryObject.setQueryAllLevel(true);
|
dataCodeClassifyVOList=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
|
dataCodeClassifyVOList.add(CodeClassifyWrapper.build().entityVO(currentCodeClassify[0]));
|
Map<String, CodeClassifyVO> oidCodeclassifyDOMap = dataCodeClassifyVOList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
|
|
List<PropertyVO> propertyVOS=condtionVO.getPro();
|
/*Map<String,String> condtionMap=new HashMap<>();
|
propertyVOS.stream().forEach(propertyVO -> {
|
condtionMap.put(propertyVO.getFiledName(),propertyVO.getFiledValue());
|
});
|
condtionMap.put("codeclsfid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) + ")");
|
List<String>statusList=new ArrayList<>();
|
statusList.add(CodeDefaultLC.RELEASED.getValue());
|
statusList.add(CodeDefaultLC.DISABLE.getValue());
|
statusList.add(CodeDefaultLC.TASK_BACK.getValue());
|
condtionMap.put("Lcstatus", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(statusList.toArray(new String[]{})) + ")" );
|
condtionMap.put("islastr", "1");
|
condtionMap.put("islastv", "1");*/
|
List<String>statusList=new ArrayList<>();
|
statusList.add(CodeDefaultLC.RELEASED.getValue());
|
statusList.add(CodeDefaultLC.DISABLE.getValue());
|
statusList.add(CodeDefaultLC.TASK_BACK.getValue());
|
R<BtmTypeVO> r= btmTypeClient.getDetail(libCodeClassify.getBtmTypeId());
|
BtmTypeVO btmTypeVO =r.getData();
|
String tableName=btmTypeVO.getTableName();
|
|
StringBuffer sb=new StringBuffer();
|
sb.append(" select * from ");
|
sb.append(tableName);
|
sb.append(" where 1=1");
|
propertyVOS.stream().forEach(propertyVO -> {
|
sb.append( " and "+propertyVO.getFiledName()+"='"+propertyVO.getFiledValue()+"'");
|
});
|
sb.append(" and islastr=1 and islastv=1" );
|
sb.append(" and codeclsfid in (" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) +")");
|
sb.append(" and Lcstatus in (" + VciBaseUtil.toInSql(statusList.toArray(new String[]{})) +")");
|
List<Map<String,String>> newDataList= commonsMapper.queryByOnlySqlForMap(sb.toString());
|
List<ClientBusinessObject>clientBusinessObjects=new ArrayList<>();
|
newDataList.stream().forEach(stringStringMap -> {
|
ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
|
DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,clientBusinessObject);
|
clientBusinessObjects.add(clientBusinessObject);
|
});
|
|
List<com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO> dataObjectVOS=new ArrayList<>();
|
if(!CollectionUtils.isEmpty(clientBusinessObjects)){
|
CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(currentCodeClassify[0].getOid());
|
Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
|
|
clientBusinessObjects.stream().forEach(cbo -> {
|
com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO dataObjectVO=new com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO();
|
dataObjectVO.setCode(cbo.getId());
|
dataObjectVO.setStatus(cbo.getLcStatus());
|
String codeclsfid=cbo.getAttributeValue("codeclsfid");
|
if(oidCodeclassifyDOMap.containsKey(codeclsfid)){
|
CodeClassifyVO codeClassifyVO= oidCodeclassifyDOMap.get(codeclsfid);
|
dataObjectVO.setClassCode(codeClassifyVO.getId());
|
}
|
dataObjectVO.setLibrary(library);
|
String [] newQueryFileds=queryFileds.split(",");
|
List<PropertyVO> propertyVOList=new ArrayList<>();
|
for(String filed:newQueryFileds){
|
String value=cbo.getAttributeValue(filed);
|
if(filedAttributeMap.containsKey(filed)){
|
CodeClassifyTemplateAttrVO attrVO= filedAttributeMap.get(filed);
|
PropertyVO propertyVO=new PropertyVO();
|
propertyVO.setFiledName(filed);
|
propertyVO.setFiledValue(value);
|
propertyVO.setOutname(attrVO.getName());
|
propertyVOList.add(propertyVO);
|
}
|
}
|
dataObjectVO.setPro(propertyVOList);
|
dataObjectVOS.add(dataObjectVO);
|
});
|
resultDataVO.setObject(dataObjectVOS);
|
}
|
}
|
}
|
errorid = "0";
|
msg = "数据查询成功";
|
}catch (Throwable e){
|
e.printStackTrace();;
|
msg="查询数据失败:"+e.getMessage();
|
}finally {
|
resultDataVO.setErrorid(errorid);
|
resultDataVO.setMsg(msg);
|
}
|
ResultVO resultVO=new ResultVO();
|
resultVO.setData(resultDataVO);
|
if(dataType.equals("xml")){
|
//组织返回接口信息
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(XMLResultSystemVO.class);
|
xStream.autodetectAnnotations(true);
|
resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultDataVO);
|
}else{
|
Object object = JSONObject.toJSON(resultVO);
|
resultStr = object.toString();
|
}
|
try { //记录日志
|
this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
|
}catch (Throwable e){
|
e.printStackTrace();
|
}
|
log.info("返回参数:"+resultStr);
|
return resultStr;
|
}
|
|
|
|
@Override
|
public String queryClassifyRule(String data, String dataType) throws Throwable {
|
|
boolean issucess=false;
|
String resultStr = "";
|
String errorid="0";
|
msg="成功";
|
String systemId="";
|
log.info("查询分类的数据参数:->"+data);
|
log.info("查询分类的数据类型:->"+dataType);
|
ResultClassifyVO resultClassifyVO =new ResultClassifyVO();
|
List<ClassifyVO> classifyVOList=new ArrayList<>();
|
try {
|
if (StringUtils.isBlank(data)) {
|
errorid = "101";
|
throw new Throwable("接口参数:传递为空");
|
}
|
QueryClassifyVO queryClassifyVO = new QueryClassifyVO();
|
//如果dataType是xml则,通过xml序列化成对象形式,如果是json则通过json转换成对象格式
|
try {
|
if ("xml".equals(dataType)) {
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(QueryData.class);
|
xStream.autodetectAnnotations(true);
|
QueryData queryData = (QueryData) xStream.fromXML(data);
|
queryClassifyVO.setData(queryData);
|
} else {
|
queryClassifyVO = JSONObject.toJavaObject(JSONObject.parseObject(data), QueryClassifyVO.class);
|
}
|
} catch (Throwable e) {
|
errorid = "101";
|
msg = "接口参数:传入数据参数解析失败";
|
e.printStackTrace();
|
throw new Throwable("接口参数:传入数据参数解析失败");
|
}
|
QueryData queryData=queryClassifyVO.getData();
|
UserVO userVo=queryData.getUser();
|
systemId=queryData.getSystemId();
|
QueryLibraryVO libraryVO= queryData.getLibrary();
|
String libId= libraryVO.getId();
|
List<String> classifyIdList= libraryVO.getClassifyid();
|
List<CodeClassifyVO> codeClassifyVOS =new ArrayList<>();
|
//这是账号信息
|
//这是账号信息
|
if(userVo!=null) {
|
SessionInfo sessionInfo = new SessionInfo();
|
sessionInfo.setUserId(userVo.getUserName());
|
sessionInfo.setUserName(userVo.getTrueName());
|
sessionInfo.setIp(userVo.getIp());
|
VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
|
}else{
|
errorid = "101";
|
throw new Throwable("接口参数:账号信息获取失败");
|
}
|
if(!CollectionUtils.isEmpty(classifyIdList)){
|
//先简称是否有关联模板,有模板要先删除
|
List<CodeClassify> libIdDos = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().in(CodeClassify::getId, classifyIdList));
|
codeClassifyVOS=classifyService.codeClassifyDO2VOs(libIdDos);
|
}else {
|
List<CodeClassify> libIdDos = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId, libId));
|
String oid= libIdDos.get(0).getOid();
|
TreeQueryObject treeQueryObject=new TreeQueryObject();
|
treeQueryObject.setParentOid(oid);
|
treeQueryObject.setQueryAllLevel(true);
|
codeClassifyVOS=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
|
}
|
|
}catch (Throwable e){
|
e.printStackTrace();;
|
msg="查询分类失败:"+e.getMessage();
|
}finally {
|
// resultData.setErrorid(errorid);
|
// resultData.setMsg(msg);
|
// resultClassifyVO.setResultData(resultData);
|
}
|
if(dataType.equals("xml")){
|
//组织返回接口信息
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(XMLResultSystemVO.class);
|
xStream.autodetectAnnotations(true);
|
//resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultData);
|
|
}else{
|
Object object = JSONObject.toJSON(resultClassifyVO);
|
resultStr = object.toString();
|
}
|
try {
|
//记录日志
|
this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
|
}catch (Throwable e){
|
e.printStackTrace();
|
}
|
log.info("返回参数:"+resultStr);
|
return resultStr;
|
}
|
|
/***
|
* 查询校验分类信息
|
* @param classfyVO
|
*/
|
private CodeClassifyVO getClassfy(ClassfyVO classfyVO) throws Throwable{
|
CodeClassifyVO classifyVO = new CodeClassifyVO();
|
try {
|
String classCode = classfyVO.getClassCode();
|
String className = classfyVO.getFullclsfNamePath();
|
//根据分类代号查询分类信息
|
if (StringUtils.isNotBlank(classfyVO.getClassCode())) {
|
Map<String, String> conditionMap = new HashMap<>();
|
List<CodeClassify> codeClassifyList = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId, classCode));
|
if (!CollectionUtils.isEmpty(codeClassifyList)) {
|
CodeClassify classifyDO = codeClassifyList.get(0);
|
//将DTO转换为DO
|
classifyVO = new CodeClassifyVO();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(classifyDO, classifyVO);
|
if(StringUtils.isBlank(classifyVO.getOid())){
|
throw new Throwable("根据分类代号未查询到相应的分类信息");
|
}
|
}else{
|
throw new Throwable("根据分类代号未查询到相应的分类信息");
|
}
|
} else {
|
classifyVO = classifyService.getObjectByClsfNamePath(className.replace(separator, "/"));
|
if(StringUtils.isBlank(classifyVO.getOid())){
|
throw new Throwable("根据分类名称路径未查询到相应的分类信息");
|
}
|
}
|
}catch (Throwable e){
|
objerrorCode="100";
|
new Throwable("获取分类信息失败:"+e.getMessage());
|
}
|
return classifyVO;
|
}
|
|
private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
|
List<ClientBusinessObject> clientBusinessObjectList=new CopyOnWriteArrayList<>();
|
oldDataMap.parallelStream().forEach(dataMap->{
|
ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
|
DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
|
dataMap.forEach((key,value)->{
|
clientBusinessObject.setAttributeValue(key,value);
|
});
|
});
|
return clientBusinessObjectList;
|
}
|
/***
|
* 根据穿入的参数信息校验码段规则
|
*/
|
private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList,CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo) throws Throwable{
|
List<CodeBasicSecVO> codeBasicSecVOS= ruleVO.getSecVOList();
|
Map<String,String> sectionVOMap=new HashMap<>();
|
SectionVOList.stream().forEach(SectionVO->{
|
sectionVOMap.put(SectionVO.getName(),SectionVO.getValue());
|
});
|
Map<String,CodeClassifyVO> codeClassifyVOMap= classifyFullInfo.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getId(), t -> t,(o1, o2)->o2));
|
List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
|
for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) {
|
String sectype = codeBasicSecVO.getSecType();
|
String classifySecOid= codeBasicSecVO.getOid();
|
if (!sectype.equals(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue())) {
|
String name = codeBasicSecVO.getName();
|
String sectypeText = codeBasicSecVO.getSecTypeText();
|
log.info("码段名称:"+name);
|
log.info("描述:"+sectypeText);
|
CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO();
|
if (sectionVOMap.containsKey(name)) {
|
CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
|
String sectypeValue = sectionVOMap.get(name);
|
log.info("码段值:"+sectypeValue);
|
CodeSecTypeEnum secType = CodeSecTypeEnum.forValue(sectype);
|
if(CODE_CLASSIFY_SEC.equals(secType)) {//如果是分类的话,则需要匹配传过来的分类代号与
|
//先简称是否有关联模板,有模板要先删除
|
List<CodeClassifyValue> codeClassifyValueDOList = codeClassifyValueService.list(Wrappers.<CodeClassifyValue>query().lambda().eq(CodeClassifyValue::getCodeClassifySecOid,classifySecOid));
|
|
if (!CollectionUtils.isEmpty(codeClassifyValueDOList)) {
|
Map<String, CodeClassifyValue> codeClassifyValueDOMap = codeClassifyValueDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t, (o1, o2) -> o2));
|
if(codeClassifyValueDOMap.containsKey(sectypeValue)){
|
CodeClassifyValue codeClassifyValue= codeClassifyValueDOMap.get(sectypeValue);
|
sectypeValue=codeClassifyValue.getOid();
|
}else {
|
objerrorCode = "101";
|
throw new Throwable("传入的分类码段:【" + name + " 值:" + sectypeValue + "】,不符合当前分类层级代号");
|
}
|
}
|
}
|
CodeOrderSecDTO.setSecValue(sectypeValue);
|
codeOrderSecDTOList.add(CodeOrderSecDTO);
|
} else {
|
objerrorCode="101";
|
throw new Throwable("传入的码段规则缺少" + name + "码段");
|
}
|
}
|
}
|
return codeOrderSecDTOList;
|
}
|
/***
|
* 根据属性映射转换编码所需字段
|
*/
|
public void getConfigDatas(String systemId,String libray, ApplyDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable {
|
List<ApplyDataVO> applyDataVOList=applyDatasVO.getObject();
|
LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>();
|
//如果将数据转换成所需要的数据对象
|
Map<String, String> attrMapConfigMap=new HashMap<>();
|
Map<String, String> propMaps=new HashMap<>();
|
try {
|
log.info("开始读取系统配置文件 start");
|
Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
|
log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
|
//stringStringMap.put("RLM","D:\\RLM.xml");
|
LibraryDO libraryDO=gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId,stringStringMap);
|
List<LibraryClsfDO> libraryClsfDOList=libraryDO.getClsf();
|
Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
|
log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置");
|
if(libPropMaps.containsKey(libray)){
|
log.info("根据参数:libray:-》"+libray+"匹配到相应的属性映射信息");
|
List<ClsfAttrMappingDO> clsfAttrMappingDOList=libPropMaps.get(libray);
|
propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
|
log.info("根据参数:libray:-》"+libray+"匹配到相应的属性映射信息,属性映射条目数+"+clsfAttrMappingDOList.size());
|
}
|
log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
|
}catch (Throwable e){
|
objerrorCode="1";
|
e.printStackTrace();
|
throw new Throwable("MDM集成属性配置文件读取失败");
|
}
|
LinkedList<String> rowNameList=new LinkedList<>();
|
LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
|
//根据分类模板组织数据
|
final int[] index = {0};
|
try {
|
codeClassifyTemplateAttrVOList.stream().forEach(codeClassifyTemplateAttrVO -> {
|
String attrName = codeClassifyTemplateAttrVO.getName();
|
String field = codeClassifyTemplateAttrVO.getId();
|
rowNameList.add(attrName);
|
filedIndexMap.put(field, index[0]++);
|
});
|
dataObjectVO.setColName(rowNameList);//放入属性
|
attrMapConfigMap.putAll(propMaps);
|
LinkedList<RowDatas> rowDataList = new LinkedList<>();
|
//Map<String, List<ProppertyVO>> dataPropMap = applyDataVOList.stream().collect(Collectors.toMap(ApplyDataVO::getId, ApplyDataVO::getProp, (key1, key2) -> key2));
|
final int[] rowIndex = {0};
|
applyDataVOList.stream().forEach(applyDataVO -> {
|
rowIndex[0]++;
|
RowDatas rowDatas = new RowDatas();
|
rowDatas.setOid(applyDataVO.getId());
|
rowDatas.setCreator(applyDataVO.getCreator());
|
rowDatas.setEditor(applyDataVO.getEditor());
|
rowDatas.setCode(applyDataVO.getCode());
|
rowDatas.setOperation(applyDataVO.getOperate());
|
rowDatas.setStatus(applyDataVO.getStatus());
|
rowDatas.setRowIndex(rowIndex[0] + "");
|
List<ProppertyVO> proppertyVOList = applyDataVO.getProp();
|
|
LinkedHashMap<Integer, String> integerValueMap = new LinkedHashMap<>();
|
Map<String, String> filedValueMap = new HashMap<>();
|
if (!CollectionUtils.isEmpty(proppertyVOList)) {
|
Map<String, String> sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey, ProppertyVO::getValue, (key1, key2) -> key2));
|
Map<String, String> keyValueMap = new HashMap<>();
|
//判断attrMapConfigMap是否有值,如果没有则说明基础默认的是编码系统字段
|
if (!CollectionUtils.isEmpty(attrMapConfigMap)) {
|
sourceKeyValueMap.keySet().forEach(sourceKey -> {
|
String dataValue = sourceKeyValueMap.get(sourceKey);
|
if (attrMapConfigMap.containsKey(sourceKey)) {
|
String targetKey = attrMapConfigMap.get(sourceKey);
|
keyValueMap.put(targetKey, StringUtils.isBlank(dataValue)?"":dataValue);
|
}
|
});
|
} else {
|
sourceKeyValueMap.forEach((filed,value)->{
|
keyValueMap.put(filed,StringUtils.isBlank(value)?"":value) ;
|
});
|
}
|
|
filedIndexMap.forEach((attrKey, column) -> {
|
String keyValue = "";
|
if (keyValueMap.containsKey(attrKey)) {
|
keyValue =StringUtils.isBlank(keyValueMap.get(attrKey))?"":keyValueMap.get(attrKey);
|
}
|
integerValueMap.put(column, keyValue);
|
filedValueMap.put(attrKey, keyValue);
|
});
|
}
|
rowDatas.setData(integerValueMap);
|
rowDatas.setFiledValue(filedValueMap);
|
rowDataList.add(rowDatas);
|
});
|
dataObjectVO.setRowData(rowDataList);
|
}catch (Throwable e){
|
objerrorCode="1";
|
throw new Throwable("组织数据映射值失败");
|
}
|
}
|
/***
|
* 记录日志信息
|
* @param systemId
|
* @param parmaData
|
* @param result
|
* @return
|
*/
|
private void saveLogs(String systemId,String systemName,String parmaData, String result,boolean isSucess,String msg,String operation){
|
//记录日志信息
|
DockingLog dockingLoge=new DockingLog();
|
//String oid=redisService.getUUIDEveryDay();
|
dockingLoge.setSystemCode(StringUtils.isBlank(systemId)?"-":systemId);//设置系统标识
|
dockingLoge.setSystemName(StringUtils.isBlank(systemName)?"-":systemName);
|
dockingLoge.setMsg(msg);//日志消息
|
dockingLoge.setClassifyId("-");//分类编号
|
dockingLoge.setClassifyName("-");//分类名称
|
dockingLoge.setClassifyOid("-");//分类主键
|
dockingLoge.setUniqueCode("-");//唯一标识
|
dockingLoge.setSystemOid("-");//系统标识
|
// dockingLogeDO.setName(operation);
|
//dockingLogeDO.setOid(oid);//日志主键
|
dockingLoge.setParamString(parmaData);//参数信息
|
dockingLoge.setReturnString(result);//返回信息
|
dockingLoge.setType(operation);//日志操作类型
|
if(isSucess) {
|
dockingLoge.setInterfaceStatus("true");//接口集成状态
|
}else{
|
dockingLoge.setInterfaceStatus("false");//接口集成状态
|
}
|
dockingLogeService.save(dockingLoge);
|
log.info("集成推送数据成功,systemId:"+systemId+",systemname:"+systemName+",operation:"+operation+",param:"+parmaData);
|
}
|
|
/***
|
* 数据维护与编码申请返回
|
* @param resultSystemVO
|
* @param dataType
|
* @return
|
*/
|
private String transferResultXMl(XMLResultSystemVO resultSystemVO,String dataType){
|
String resultStr="";
|
if ("xml".equals(dataType)) {
|
//组织返回接口信息
|
XStream xStream = new XStream(new DomDriver());
|
xStream.processAnnotations(XMLResultSystemVO.class);
|
xStream.autodetectAnnotations(true);
|
resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultSystemVO);
|
} else {
|
List<XMLResultClassfyVO> resultClassfyVOList =resultSystemVO.getClassifys();
|
JSONResultDataVO resultDataVO = new JSONResultDataVO();
|
JSONResultSystemVO jsonResultSystemVO = new JSONResultSystemVO();
|
JSONResultClassfysVO jsonResultClassfysVO = new JSONResultClassfysVO();
|
List<JSONResultClassfyVO> jSONResultClassfyVOList = new ArrayList<>();
|
resultClassfyVOList.stream().forEach(resultClassfyVO -> {
|
List<XMLResultDataObjectDetailDO> xmlResultDataObjectDetailDOS = resultClassfyVO.getObjects();
|
List<JSONResultDataObjectDetailDO> JSONResultDataObjectDetailDOList = new ArrayList<>();
|
xmlResultDataObjectDetailDOS.stream().forEach(xmlResultDataObjectDetail -> {
|
JSONResultDataObjectDetailDO jsonResultDataObjectDetail = new JSONResultDataObjectDetailDO();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(xmlResultDataObjectDetail, jsonResultDataObjectDetail);
|
JSONResultDataObjectDetailDOList.add(jsonResultDataObjectDetail);
|
});
|
JSONResultClassfyVO jsonResultClassfyVO = new JSONResultClassfyVO();
|
jsonResultClassfyVO.setClassCode(resultClassfyVO.getClassCode());
|
jsonResultClassfyVO.setLibrary(resultClassfyVO.getLibrary());
|
jsonResultClassfyVO.setFullclsfNamePath(resultClassfyVO.getFullclsfNamePath());
|
JSONResultDataObjectDO JSONResultDataObjectDO = new JSONResultDataObjectDO();
|
JSONResultDataObjectDO.setObject(JSONResultDataObjectDetailDOList);
|
jsonResultClassfyVO.setObjects(JSONResultDataObjectDO);
|
jSONResultClassfyVOList.add(jsonResultClassfyVO);
|
});
|
jsonResultClassfysVO.setClassify(jSONResultClassfyVOList);
|
jsonResultSystemVO.setClassifys(jsonResultClassfysVO);
|
jsonResultSystemVO.setErrorid(resultSystemVO.getErrorid());
|
jsonResultSystemVO.setMsg(resultSystemVO.getMsg());
|
resultDataVO.setData(jsonResultSystemVO);
|
Object object = JSONObject.toJSON(resultDataVO);
|
resultStr = object.toString();
|
|
}
|
return resultStr;
|
}
|
|
|
}
|