package com.vci.ubcs.code.service.impl; import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.constant.MdmDuckingConstant; import com.vci.ubcs.code.dto.CodeBZApplyDTO; 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.*; 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.applybz.*; import com.vci.ubcs.code.vo.webserviceModel.person.*; 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.classify.QueryClassifyVO; import com.vci.ubcs.code.vo.webserviceModel.classify.QueryData; import com.vci.ubcs.code.vo.webserviceModel.classify.QueryLibraryVO; import com.vci.ubcs.code.vo.webserviceModel.classify.ResultClassifyVO; import com.vci.ubcs.code.vo.webserviceModel.coderule.*; import com.vci.ubcs.code.vo.webserviceModel.data.*; import com.vci.ubcs.code.vo.webserviceModel.data.ResultDataVO; 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.webService.config.PersonAndDeptConfig; import com.vci.ubcs.omd.cache.EnumCache; import com.vci.ubcs.omd.feign.IBtmTypeClient; import com.vci.ubcs.omd.feign.IDictClient; import com.vci.ubcs.omd.feign.IEnumClient; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.revision.model.TreeQueryObject; import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; import com.vci.ubcs.starter.util.UBCSSqlKeyword; 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 com.vci.ubcs.system.feign.ISysClient; import com.vci.ubcs.system.user.entity.User; import com.vci.ubcs.system.user.feign.IUserClient; import com.vci.ubcs.system.vo.DeptVO; import com.vci.ubcs.system.vo.RoleVO; import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.jws.WebMethod; import javax.servlet.http.HttpServletRequest; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; 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; import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_REFER_SEC; /*** * 统一接口 */ @Service @Slf4j @VciWebservice(path = "/universalInterface") public class UniversalInterfaceImpl implements UniversalInterfaceI { /*** * 操作类型 */ @Value("${bzApply.operationType:operationType}") private String operationType; /*** * 是否系列 */ @Value("${bzApply.isSeries:isSeries}") private String isSeries; /*** *发布时间 */ @Value("${bzApply.releaseTime:releaseTime}") private String releaseTime; /*** * 源标准号 */ @Value("${bzApply.oldCode:oldCode}") private String oldCode; /*** * 系列流水 */ @Value("${bzApply.seriesFlow:seriesFlow}") private String seriesFlow; /*** * 是否变更系列 */ @Value("${bzApply.isEditSeries:isEditSeries}") private String isEditSeries; /*** * 控制是否写入值的码段名称 */ @Value("${bzApply.secName:系列号}") private String secName; /*** * 控制是否写入值的码段名称 */ @Value("${bzApply.yearSecName:年代号}") private String yearSecName; @Value("${code.universalinterface.checkSystemConfig:true}") public boolean CODE_CHECKCONFIG; @Autowired(required = false) private AttributeMapConfig attributeMapConfig; /*** * 人员相关配置服务 */ @Autowired(required = false) private PersonAndDeptConfig personAndDeptConfig; /** * 缓存服务 */ //@Autowired //private RedisService redisService; /** * 主题库分类的服务 */ @Autowired(required = false) private ICodeClassifyService classifyService; /** * 业务类型的服务 */ @Autowired private IBtmTypeClient btmTypeClient; /** * 人员服务 */ @Autowired private ISysClient sysClient; /** * 人员服务 */ @Autowired private IUserClient userClient; /** * 通用查询 */ @Resource private CommonsMapper commonsMapper; /** * 主数据引擎的服务 */ @Resource private MdmEngineService engineService; /** * 密级的服务 */ @Resource private MdmIOService mdmIOService; @Resource private IDockingSystemConfigService dockingSystemConfigService; @Autowired private ICodeClassifyValueService codeClassifyValueService; /*** * 集成接口日志服务的配置 */ @Resource private IDockingLogeService dockingLogeService; @Resource private IPasswordFreeLoginService passwordFreeLoginService; /** * 自定义并发ForkJoinPool */ private static final ForkJoinPool customForkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors() - 1); private static String separator="##VCI##"; private String errorid="0"; private String msg="成功"; private String objerrorCode="0"; private String objerrorMsg="成功"; private final ThreadLocal threadLocal = new ThreadLocal<>(); @Resource private WebServiceContext webServiceContext; @Override public void setThreadLocal(ThreadLocal requestThreadLocal){ this.threadLocal.set(requestThreadLocal.get()); requestThreadLocal.remove(); } @WebMethod private HttpServletRequest getRequest() { //rest请求方式获取request HttpServletRequest request = this.threadLocal.get(); if(Func.isEmpty(request)){ try { // webservice请求方式获取HttpServletRequest对象 request = (HttpServletRequest)webServiceContext.getMessageContext().get(MessageContext.SERVLET_REQUEST); }catch (Exception e){ throw new ServiceException("获取httpServletRequest失败,原因:"+e.getMessage()); } }else { this.threadLocal.remove(); } return request; } /*** * 申请编码接口 * @param data 传递的数据参数 * @param dataType 标识data是xml格式还是json格式,接口返回数据也是按照这个格式,以下接口类同 * @return * @throws Throwable */ @Override public String applyCode(String data, String dataType) throws Throwable { String resultStr = ""; final String[] errorid = {"0"}; msg="成功"; objerrorCode="0"; objerrorMsg="成功"; log.info("申请编码的数据参数:->"+data); log.info("申请编码的数据类型:->"+dataType); String systemId=""; List resultClassfyVOList = new ArrayList<>(); try { if(StringUtils.isBlank(data)) { errorid[0] ="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[0] ="101"; log.error("接口参数:传入数据参数解析失败",e); throw new Throwable("接口参数:传入数据参数解析失败"); } ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); systemId = interParameterVO.getData().getSystemId(); UserVO userVo = interParameterVO.getData().getUser(); //免密登录申请token,request中添加用户信息 try { passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT), this.getRequest()); }catch (Throwable e){ errorid[0] ="1"; throw new Throwable("用户鉴权失败,原因:"+e.getMessage()); } List 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); //List allResultDataObjectDetailDOS=new ArrayList<>(); String finalSystemId = systemId; classVOList.stream().forEach(classVO -> { log.info("参数:分类Code:" + classVO.getClassCode()); boolean isCodeOrGroupCode=false; LinkedList resultDataObjectDetailDOs = new LinkedList<>(); String libray =""; //获取分类信息 try { libray = classVO.getLibrary(); CodeClassifyVO codeClassifyVO = getClassfy(classVO,libray); log.info("end:分类查询完毕"); //获取分类模板信息 if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ objerrorCode="100"; throw new Throwable ("根据传输的分类,未获取到分类信息"); } String operation=""; if(CODE_CHECKCONFIG) { //校验是否配置 DockingSystemConfig dockingSystemConfig=null; dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid()); if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){ errorid[0] ="101"; throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!"); } isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false; } 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 attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || 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 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,isCodeOrGroupCode); //allResultDataObjectDetailDOS.add(resultDataObjectDetailDOs); log.info("end:申请获取完毕"); } catch (Throwable e) { List applyDataVOList= classVO.getObjects().getObject(); objerrorCode="1"; log.error("编码申请失败:",e); if(!CollectionUtils.isEmpty(applyDataVOList)) { applyDataVOList.stream().forEach(applyDataVO -> { XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); xmlResultDataObjectDetailDO.setCode(""); xmlResultDataObjectDetailDO.setId(applyDataVO.getId()); xmlResultDataObjectDetailDO.setErrorid(objerrorCode); xmlResultDataObjectDetailDO.setMsg("编码申请失败:" + e.getMessage()); resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); }); }else{ XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); xmlResultDataObjectDetailDO.setCode(""); xmlResultDataObjectDetailDO.setId(""); xmlResultDataObjectDetailDO.setErrorid(objerrorCode); xmlResultDataObjectDetailDO.setMsg("编码申请失败:" + e.getMessage()); resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); } e.printStackTrace(); //log.error(e.getMessage()); }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[0]); resultStr= transferResultXMl(xmlResultSystemVO,dataType); }catch (Throwable e){ e.printStackTrace(); msg="申请编码失败:"+e.getMessage(); //log.error(msg); log.error("编码申请失败:",e); /* 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[0]); resultStr= transferResultXMl(xmlResultSystemVO,dataType); final boolean[] issucess = {true}; if(!errorid[0].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("201") ||objec.getErrorid().equals("205")|| 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.error(e.getMessage()); log.error("保存日志出错,原因:",e); } } log.info("返回参数:"+resultStr); //调用集团申请接口申请集团码 return resultStr; } /**** * 人员数据同步 * @param personData * @return * @throws Throwable */ @Override public ResultOrgData syncDataForPerson(PersonData personData) { boolean isUsedFlag= personAndDeptConfig.isUsedFlag(); ResultOrgData resultOrgData=new ResultOrgData(); boolean isPersonApplyGroupCode= personAndDeptConfig.isPersonApplyGroupCode(); String systemCode=personData.getSystemCode(); List resultMdMappingList=new ArrayList<>(); String message=""; if(isUsedFlag){ AtomicBoolean success= new AtomicBoolean(true); List masterDataList=new ArrayList<>(); List fields = Func.toStrList(personAndDeptConfig.getPersonFields()); try { if(personData==null){ throw new Throwable("传入参数为null"); } try { passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest()); }catch (Throwable e){ log.error("用户鉴权失败:",e); throw new Throwable("用户鉴权失败"); } masterDataList = personData.getMasterData(); String personLibrary = personAndDeptConfig.getPersonLibrary(); if (StringUtils.isBlank(personLibrary)) { success.set(false); log.info("集成配置缺少人员库节点信息,personLibrary->" + personLibrary); throw new Throwable("集成配置缺少人员库节点信息,personLibrary->" + personLibrary); } String personClassCode = personAndDeptConfig.getPersonClassCode(); ClassfyVO classfyVO = new ClassfyVO(); classfyVO.setLibrary(personLibrary); classfyVO.setClassCode(personClassCode); CodeClassifyVO codeClassifyVO=this.getClassfy(classfyVO,personLibrary); log.info("end:分类查询完毕"); //获取分类模板信息 if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ success.set(false); throw new Throwable ("根据配置分类的分类编号,未获取到分类信息"); } CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid()); if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){ success.set(false); throw new Throwable ("根据传输的分类,未获取MDM系统中对应模板"); } List attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) ).collect(Collectors.toList()); List personMasterDataList= personData.getMasterData(); //List dataList=new ArrayList<>(); List codeList=new ArrayList<>(); List applyDataVOList=new ArrayList<>(); List deleteDataVOList=new ArrayList<>(); personMasterDataList.stream().forEach(personMasterData -> { ApplyDataVO object=new ApplyDataVO(); object.setCode(personMasterData.getLm_code());//编码 object.setCreator(personMasterData.getCreator());//创建者 object.setEditor(personMasterData.getModifier());//修改者 object.setId(personMasterData.getId());//主键 object.setStatus(CodeDefaultLC.RELEASED.getValue());//状态则需要判断 Map dataMap= VciBaseUtil.objectToMapString(personMasterData); List proppertyVOList=new ArrayList<>(); /*** * 根据配置文件获取枚举值 */ fields.stream().forEach(field->{ if(dataMap.containsKey(field)){ String enumFiled = dataMap.get(field); EnumerableData enumerableData=JSONObject.toJavaObject(JSONObject.parseObject(enumFiled),EnumerableData.class); String enumCode=enumerableData.getCode(); //String enumCodeValue=enumerableData.getName(); ProppertyVO proppertyVO=new ProppertyVO(); proppertyVO.setKey(field); proppertyVO.setValue(enumCode); proppertyVOList.add(proppertyVO); dataMap.remove(field); } }); dataMap.forEach((key,vaule)->{ ProppertyVO proppertyVO=new ProppertyVO(); proppertyVO.setKey(key); proppertyVO.setValue(vaule); proppertyVOList.add(proppertyVO); }); object.setProp(proppertyVOList); if(personMasterData.getDr()==1){ //操作类型 object.setOperate("delete"); deleteDataVOList.add(object); }else{ //String worker_category=personMasterData.getWorker_category(); object.setOperate("create"); applyDataVOList.add(object); } codeList.add(object.getCode()); }); R r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId()); if(!r.isSuccess()) { throw new Throwable(r.getMsg()); } BtmTypeVO btmTypeVO = r.getData(); if (btmTypeVO == null) { throw new Throwable("根据业务类型未查询到业务类型对象!"); } String tableName = btmTypeVO.getTableName(); if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) { throw new Throwable("根据业务类型未查询到业务类型相关联的表"); } StringBuffer sb=new StringBuffer(); sb.append(" select * from "); sb.append(tableName); sb.append(" where 1=1 "); sb.append(" and lastr=1 and lastv=1" ); sb.append(" and id in ("); sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0]))); sb.append(")"); List> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString()); DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true); List cboList= ChangeMapTOClientBusinessObjects(dataMapList); ApplyDatasVO applyDatasVO=new ApplyDatasVO(); ApplyDatasVO editDatasVO=new ApplyDatasVO(); if(!CollectionUtils.isEmpty(cboList)){ Map oldpplyDataVOMap = cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); //数据库不存在的 List applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> { String code =cbo.getCode(); return !oldpplyDataVOMap.containsKey(code); }).collect(Collectors.toList()); applyDatasVO.setObject(applyApplyDataVOList); //数据库存在的 List editApplyDataVOList = applyDataVOList.stream().filter(cbo -> { String code =cbo.getCode(); if(oldpplyDataVOMap.containsKey(code)){ cbo.setOperate("update"); } return oldpplyDataVOMap.containsKey(code); }).collect(Collectors.toList()); editApplyDataVOList.addAll(deleteDataVOList); editDatasVO.setObject(editApplyDataVOList); }else{ applyDatasVO.setObject(applyDataVOList); } LinkedList resultDataObjectDetailDOs=new LinkedList<>(); if(editDatasVO.getObject()!=null&&editDatasVO.getObject().size()>0){ DataObjectVO dataObjectVO = new DataObjectVO(); this.getConfigDatas(systemCode, personLibrary, editDatasVO, attrVOS, dataObjectVO); log.info("start:修改数据执行完毕"); // boolean personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode(); mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,isPersonApplyGroupCode); log.info("end:修改数据执行完毕"); } if(applyDatasVO.getObject()!=null&&applyDatasVO.getObject().size()>0) { DataObjectVO dataObjectVO = new DataObjectVO(); this.getConfigDatas(systemCode, personLibrary, applyDatasVO, attrVOS, dataObjectVO); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid()); CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); if(ruleVO==null||"".equals(ruleVO.getOid())){ throw new Throwable("编码规则"); } List xDOs=new CopyOnWriteArrayList<>(); final List rowDatas = dataObjectVO.getRowData(); rowDatas.parallelStream().forEach(rowData->{ String mesg=""; try { CodeOrderDTO orderDTO = new CodeOrderDTO(); List codeOrderSecDTOList=new ArrayList<>(); orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键 orderDTO.setTemplateOid(templateVO.getOid()); orderDTO.setCreator(rowData.getCreator()); orderDTO.setLastModifier(rowData.getEditor()); orderDTO.setLcStatus(rowData.getStatus()); if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) { ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> { if (codeBasicSecVO.getSecType().equals("codevariablesec")) {//规则之定义为可变码段存储主数据传递过来的数据 CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO(); CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid()); CodeOrderSecDTO.setSecValue(rowData.getCode()); codeOrderSecDTOList.add(CodeOrderSecDTO); } }); } orderDTO.setCodeRuleOid(ruleVO.getOid()); orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码 orderDTO.setData(rowData.getFiledValue()); String code=engineService.addSaveCodeNotauthUser(orderDTO,false); if(StringUtils.isNotBlank(code)) { StringBuffer sqlsb = new StringBuffer(); sqlsb.append(" select * from "); sqlsb.append(tableName); sqlsb.append(" where 1=1 "); sqlsb.append(" and lastr=1 and lastv=1"); sqlsb.append(" and id in ("); sqlsb.append(VciBaseUtil.toInSql(code)); sqlsb.append(")"); List> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString()); if (!CollectionUtils.isEmpty(newDataMapList)) { String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID"); List oidList = new ArrayList<>(); oidList.add(oid); //如果有申请就去调用申请集团码 if (isPersonApplyGroupCode) { mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue()); success.set(true); mesg = "数据保存成功,等待申请集团码"; } } } } catch (Exception e) { log.error("数据保存失败:",e); mesg=e.getMessage(); e.printStackTrace(); // throw new ServiceException(e.getMessage()); }finally { XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO(); x.setId(rowData.getOid()); x.setCode(rowData.getCode()); x.setMsg(mesg); x.setErrorid("1"); xDOs.add(x); } }); resultDataObjectDetailDOs.addAll(xDOs); boolean finalSuccess1 = success.get(); String finalMessage1 = message; // 限制线程并行数量 customForkJoinPool.submit(()->{ resultDataObjectDetailDOs.stream().forEach(resultDataObjectDetailDO->{ ResultMdMapping resultMdMapping=new ResultMdMapping(); resultMdMapping.setBusiDataId(resultDataObjectDetailDO.getId()); resultMdMapping.setSuccess(finalSuccess1); resultMdMapping.setEntityCode(" "); resultMdMapping.setMdmCode(resultDataObjectDetailDO.getCode()); resultMdMapping.setMessage(finalMessage1); resultMdMapping.setSubMdMappings(null); resultMdMappingList.add(resultMdMapping); }); }).join(); log.info("end:申请获取完毕"); } }catch (Throwable e){ success.set(false); message = "人员数据接收失败:"+e.getMessage(); msg = "人员数据接收失败:"+e.getMessage(); log.error( "人员数据接收失败:",e); //组织返回结果 boolean finalSuccess = success.get(); String finalMessage = message; masterDataList.stream().forEach(masterData -> { ResultMdMapping resultMdMapping=new ResultMdMapping(); resultMdMapping.setBusiDataId(masterData.getId()); resultMdMapping.setSuccess(finalSuccess); resultMdMapping.setEntityCode(" "); resultMdMapping.setMdmCode(masterData.getLm_code()); resultMdMapping.setMessage(finalMessage); resultMdMapping.setSubMdMappings(null); }); }finally { resultOrgData.setMessage(message); resultOrgData.setSuccess(success.get()); resultOrgData.setMdMappings(resultMdMappingList); //Object object = JSONObject.toJSON(resultOrgData); } String resultStr = JSONObject.toJSONString(resultOrgData); String data = JSONObject.toJSONString(personData); try { //记录日志 this.saveLogs(systemCode, systemCode, data, resultStr, success.get(), msg, "syncDataForPerson"); }catch (Throwable e){ log.error( "日志保存失败:",e); e.printStackTrace(); } } return resultOrgData; } /**** * 部门数据同步 * @param orgData * @return * @throws Throwable */ @Override public ResultOrgData syncDataForOrg(OrgData orgData) { boolean isUsedFlag= personAndDeptConfig.isUsedFlag(); ResultOrgData resultOrgData=new ResultOrgData(); // boolean isPersonApplyGroupCode= personAndDeptConfig.isDeptApplyGroupCode(); List resultMdMappingList=new ArrayList<>(); AtomicBoolean success= new AtomicBoolean(true); String message=""; String systemCode=""; if(isUsedFlag){ List orgMasterDataList = new ArrayList<>(); List fields = Func.toStrList(personAndDeptConfig.getDeptFields()); try { if(orgData==null){ throw new Throwable("传入参数为null"); } systemCode=orgData.getSystemCode(); try { passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest()); }catch (Throwable e){ log.error( "用户鉴权失败:",e); throw new Throwable("用户鉴权失败"); } orgMasterDataList = orgData.getMasterData(); String deptLibrary = personAndDeptConfig.getDeptLibrary(); if (StringUtils.isBlank(deptLibrary)) { success.set(false); log.info("集成配置缺少部门库节点信息,deptLibrary->" + deptLibrary); throw new Throwable("集成配置缺少部门库节点信息,deptLibrary->" + deptLibrary); } String deptClassCode = personAndDeptConfig.getDeptClassCode(); ClassfyVO classfyVO = new ClassfyVO(); classfyVO.setLibrary(deptLibrary); classfyVO.setClassCode(deptClassCode); CodeClassifyVO codeClassifyVO = this.getClassfy(classfyVO,deptLibrary); log.info("end:分类查询完毕"); //获取分类模板信息 if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ success.set(false); throw new Throwable ("根据配置分类的分类编号,未获取到分类信息"); } CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid()); if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){ success.set(false); throw new Throwable ("根据传输的分类,未获取MDM系统中对应模板"); } List attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) ).collect(Collectors.toList()); List codeList=new ArrayList<>(); List applyDataVOList=new ArrayList<>(); List deleteDataVOList=new ArrayList<>(); orgMasterDataList.stream().forEach(orgMasterData -> { ApplyDataVO object=new ApplyDataVO(); object.setCode(orgMasterData.getDepartment_code());//编码 object.setCreator(orgMasterData.getCreator());//创建者 object.setEditor(orgMasterData.getModifier());//修改者 object.setId(orgMasterData.getId());//主键 object.setStatus(CodeDefaultLC.RELEASED.getValue());//状态则需要判断 Map dataMap= VciBaseUtil.objectToMapString(orgMasterData); List proppertyVOList = new ArrayList<>(); /*** * 根据配置文件获取枚举值 */ fields.stream().forEach(field->{ if(dataMap.containsKey(field)){ String enumFiled= dataMap.get(field); EnumerableData enumerableData=JSONObject.toJavaObject(JSONObject.parseObject(enumFiled),EnumerableData.class); String enumCode=enumerableData.getCode(); //String enumCodeValue=enumerableData.getName(); ProppertyVO proppertyVO=new ProppertyVO(); proppertyVO.setKey(field); proppertyVO.setValue(enumCode); proppertyVOList.add(proppertyVO); dataMap.remove(field); } }); dataMap.forEach((key,vaule)->{ ProppertyVO proppertyVO=new ProppertyVO(); proppertyVO.setKey(key); proppertyVO.setValue(vaule); proppertyVOList.add(proppertyVO); }); object.setProp(proppertyVOList); if(orgMasterData.getDr()==1){ object.setOperate("delete");//操作类型 deleteDataVOList.add(object); }else{ object.setOperate("create"); applyDataVOList.add(object); } codeList.add(object.getCode()); }); R r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId()); if(!r.isSuccess()) { throw new Throwable(r.getMsg()); } BtmTypeVO btmTypeVO = r.getData(); if (btmTypeVO == null) { throw new Throwable("根据业务类型未查询到业务类型对象!"); } String tableName = btmTypeVO.getTableName(); if (StringUtils.isBlank(tableName)) { throw new Throwable("根据业务类型未查询到业务类型相关联的表"); } StringBuffer sb = new StringBuffer(); sb.append(" select * from "); sb.append(tableName); sb.append(" where 1=1 "); sb.append(" and lastr=1 and lastv=1" ); sb.append(" and id in ("); sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0]))); sb.append(")"); List> dataMapList = commonsMapper.queryByOnlySqlForMap(sb.toString()); DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true); List cboList = ChangeMapTOClientBusinessObjects(dataMapList); ApplyDatasVO applyDatasVO=new ApplyDatasVO(); ApplyDatasVO editDatasVO=new ApplyDatasVO(); if(!CollectionUtils.isEmpty(cboList)){ Map oldpplyDataVOMap = cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); //数据库不存在的 List applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> { String code = cbo.getCode(); return !oldpplyDataVOMap.containsKey(code); }).collect(Collectors.toList()); applyDatasVO.setObject(applyApplyDataVOList); //数据库存在的 List editApplyDataVOList = applyDataVOList.stream().filter(cbo -> { String code =cbo.getCode(); if(oldpplyDataVOMap.containsKey(code)){ cbo.setOperate("update"); } return oldpplyDataVOMap.containsKey(code); }).collect(Collectors.toList()); editApplyDataVOList.addAll(deleteDataVOList); editDatasVO.setObject(editApplyDataVOList); }else{ applyDatasVO.setObject(applyDataVOList); } LinkedList resultDataObjectDetailDOs=new LinkedList<>(); if(editDatasVO.getObject()!=null&&editDatasVO.getObject().size()>0){ DataObjectVO dataObjectVO = new DataObjectVO(); this.getConfigDatas(systemCode, deptLibrary, editDatasVO, attrVOS, dataObjectVO); log.info("start:修改数据执行完毕"); boolean personApplyGroupCode = false;//personAndDeptConfig.isPersonApplyGroupCode(); mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,personApplyGroupCode); log.info("end:修改数据执行完毕"); } if(applyDatasVO.getObject()!=null&&applyDatasVO.getObject().size()>0) { DataObjectVO dataObjectVO = new DataObjectVO(); this.getConfigDatas(systemCode, deptLibrary, applyDatasVO, attrVOS, dataObjectVO); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid()); CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); if(ruleVO==null||"".equals(ruleVO.getOid())){ throw new Throwable("编码规则"); } List xDOs=new CopyOnWriteArrayList<>(); //限制线程并行数量 //customForkJoinPool.submit(()->{ // dataObjectVO.getRowData().parallelStream().forEach(rowData->{ dataObjectVO.getRowData().forEach(rowData->{ String mesg=""; try { CodeOrderDTO orderDTO = new CodeOrderDTO(); List codeOrderSecDTOList=new ArrayList<>(); orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键 orderDTO.setTemplateOid(templateVO.getOid()); orderDTO.setCreator(rowData.getCreator()); orderDTO.setLastModifier(rowData.getEditor()); orderDTO.setLcStatus(rowData.getStatus()); if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) { ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> { if (codeBasicSecVO.getSecType().equals("codevariablesec")) { //规则之定义为可变码段存储主数据传递过来的数据 CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO(); CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid()); CodeOrderSecDTO.setSecValue(rowData.getCode()); codeOrderSecDTOList.add(CodeOrderSecDTO); } }); } orderDTO.setCodeRuleOid(ruleVO.getOid()); orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码 orderDTO.setData(rowData.getFiledValue()); String code = engineService.addSaveCodeNotauthUser(orderDTO,false); /*if(StringUtils.isNotBlank(code)) { //rowData.setCode(code); StringBuffer sqlsb = new StringBuffer(); sqlsb.append(" select * from "); sqlsb.append(tableName); sqlsb.append(" where 1=1 "); sqlsb.append(" and lastr=1 and lastv=1"); sqlsb.append(" and id in ("); sqlsb.append(VciBaseUtil.toInSql(code)); sqlsb.append(")"); List> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString()); if (!CollectionUtils.isEmpty(newDataMapList)) { String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID"); List oidList = new ArrayList<>(); oidList.add(oid); //如果有申请就去调用申请集团码 if (isPersonApplyGroupCode) { mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue()); success.set(true); mesg = "数据保存成功,等待申请集团码"; } } }*/ } catch (Exception e) { log.error( "部门数据接收失败:",e); mesg=e.getMessage(); e.printStackTrace(); // throw new ServiceException(e.getMessage()); }finally { XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO(); x.setId(rowData.getOid()); x.setCode(rowData.getCode()); x.setMsg(mesg); x.setErrorid("1"); xDOs.add(x); } }); //}).join(); resultDataObjectDetailDOs.addAll(xDOs); boolean finalSuccess1 = success.get(); String finalMessage1 = message; resultDataObjectDetailDOs.stream().forEach(resultDataObjectDetailDO->{ ResultMdMapping resultMdMapping=new ResultMdMapping(); resultMdMapping.setBusiDataId(resultDataObjectDetailDO.getId()); resultMdMapping.setSuccess(finalSuccess1); resultMdMapping.setEntityCode(" "); resultMdMapping.setMdmCode(resultDataObjectDetailDO.getCode()); resultMdMapping.setMessage(finalMessage1); resultMdMapping.setSubMdMappings(null); resultMdMappingList.add(resultMdMapping); }); log.info("end:申请获取完毕"); } }catch (Throwable e){ success.set(false); message = "部门数据接收失败:"+e.getMessage(); msg = "部门数据接收失败:"+e.getMessage(); log.error( "部门数据接收失败:",e); //组织返回结果 boolean finalSuccess = success.get(); String finalMessage = message; orgMasterDataList.stream().forEach(masterData -> { ResultMdMapping resultMdMapping=new ResultMdMapping(); resultMdMapping.setBusiDataId(masterData.getPk_mdm()); resultMdMapping.setSuccess(finalSuccess); resultMdMapping.setEntityCode(" "); resultMdMapping.setMdmCode(masterData.getMdm_code()); resultMdMapping.setMessage(finalMessage); resultMdMapping.setSubMdMappings(null); }); }finally { resultOrgData.setMessage(message); resultOrgData.setSuccess(success.get()); resultOrgData.setMdMappings(resultMdMappingList); Object object = JSONObject.toJSON(resultOrgData); } String resultStr = JSONObject.toJSONString(resultOrgData); String data = JSONObject.toJSONString(orgData); try { //记录日志 this.saveLogs(systemCode, systemCode, data, resultStr, success.get(), msg, "syncDataForOrg"); }catch (Throwable e){ log.error( "保存日志失败:",e); e.printStackTrace(); } } return resultOrgData; } /*** * 统一更新接口(更改状态,更改属性信息)接口 * @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 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(); //免密登录申请token,request中添加用户信息 //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); try { passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); }catch (Throwable e){ errorid = "1"; log.error("用户鉴权失败",e); throw new Throwable("用户鉴权失败"); } List 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()); boolean isCodeOrGroupCode=false; LinkedList resultDataObjectDetailDOs = new LinkedList<>(); String libray =""; //获取分类信息 try { libray = classVO.getLibrary(); CodeClassifyVO codeClassifyVO = getClassfy(classVO,libray); if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ objerrorCode="100"; throw new Throwable ("根据传输的分类,未获取到分类信息"); } log.info("end:分类查询完毕"); String operation=""; if(CODE_CHECKCONFIG) { //校验是否配置 DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue(),codeClassifyVO.getOid()); if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){ objerrorCode ="101"; throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!"); } isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false; } //获取分类模板信息 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 attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || 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,isCodeOrGroupCode); log.info("end:修改数据执行完毕"); } catch (Throwable e) { msg="编码更改/状态更改/删除:"; log.error(msg,e); List applyDataVOList= classVO.getObjects().getObject(); objerrorCode="1"; if(!CollectionUtils.isEmpty(applyDataVOList)) { applyDataVOList.stream().forEach(applyDataVO -> { XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); xmlResultDataObjectDetailDO.setCode(""); xmlResultDataObjectDetailDO.setId(applyDataVO.getId()); xmlResultDataObjectDetailDO.setErrorid(objerrorCode); xmlResultDataObjectDetailDO.setMsg("编码更改/状态更改/删除:" + e.getMessage()); resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); }); }else { 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(); log.error(msg,e); /* 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("201") ||objec.getErrorid().equals("205")|| objec.getErrorid().equals("204"))) { issucess[0] = false; } msg=objec.getMsg(); }); }); } } try { //记录日志 this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "syncEditData"); }catch (Throwable e){ log.error("保存日志失败",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 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(); log.error("接口参数:传入数据参数解析失败",e); throw new Throwable("接口参数:传入数据参数解析失败"); } QueryData queryData=queryClassifyVO.getData(); UserVO userVo=queryData.getUser(); systemId=queryData.getSystemId(); //免密登录申请token,request中添加用户信息 //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); try { passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); }catch (Throwable e){ errorid = "1"; throw new Throwable("用户鉴权失败"); } QueryLibraryVO libraryVO= queryData.getLibrary(); String libId= libraryVO.getId(); List classifyIdList= libraryVO.getClassifyid(); List codeClassifyVOS =new ArrayList<>(); //校验是否配置 boolean checkPass = checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYCLAFILY.getValue()); if (!checkPass) { errorid = "101"; throw new Throwable("系统标识为【" + systemId + "】," + sysIntegrationPushTypeEnum.ACCPET_QUERYCLAFILY.getText() + "接口配置已停用或者未配置,请联系编码管理员!"); } //这是账号信息 //这是账号信息 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("接口参数:账号信息获取失败"); } List libIdDos =classifyService.selectByWrapper(Wrappers.query().lambda().in(CodeClassify::getId, libId)); if(!CollectionUtils.isEmpty(libIdDos)) { CodeClassify libCodeClassify =libIdDos.get(0); String oid=libCodeClassify.getOid(); if (!CollectionUtils.isEmpty(classifyIdList)) { //先简称是否有关联模板,有模板要先删除 List childCodeClassifyList = classifyService.selectByWrapper(Wrappers.query().lambda().in(CodeClassify::getId, classifyIdList)); ListnewchildCodeClassifyList=new ArrayList<>(); if(!CollectionUtils.isEmpty(childCodeClassifyList)) { Map errorMap=new HashMap<>(); childCodeClassifyList.stream().forEach(codeClassify -> { CodeClassifyVO toClassifyVO= classifyService.getTopClassifyVO(codeClassify.getOid()); if(toClassifyVO.getOid().equals(libCodeClassify.getOid())){ newchildCodeClassifyList.add(codeClassify); } }); Map classifyfCodeMap = newchildCodeClassifyList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t)); classifyIdList.stream().forEach(classifyfCode -> { if(!classifyfCodeMap.containsKey(classifyfCode)) { errorMap.put("error", errorMap.getOrDefault("error", "") + ";根据classCode:【" + classifyfCode + "】在library:【" + libCodeClassify.getId() + "】下未查询到"); } }); if(errorMap.size()>0){ errorid = "101"; msg = errorMap.getOrDefault("error",""); throw new Throwable(msg); } codeClassifyVOS = classifyService.codeClassifyDO2VOs(newchildCodeClassifyList); }else{ errorid = "101"; msg = "接口参数:classCode 未查询到对应的分类信息"; throw new Throwable(msg); } } else { /*TreeQueryObject treeQueryObject = new TreeQueryObject(); treeQueryObject.setParentOid(oid); treeQueryObject.setQueryAllLevel(true);*/ codeClassifyVOS = classifyService.getIdPathToNamePathByParentId(oid,false); } }else{ errorid = "101"; throw new Throwable("接口参数:账号信息获取失败"); } 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.getNamePath()); classifyVOList.add(classifyVO); }); libraryVo.setClassify(classifyVOList); }else{ errorid = "100"; msg="未查询到相关的分类信息"; } issucess=true; resultData.setLibrary(libraryVo); }catch (Throwable e){ e.printStackTrace(); msg="查询分类失败:"+e.getMessage(); log.error(msg,e); }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 = "\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){ log.error("保存日志信息失败:",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(); log.error( "接口参数:传入数据参数解析失败",e); throw new Throwable("接口参数:传入数据参数解析失败"); } CondtionsVO condtionsVO=dataCondtionsVO.getCondtions(); systemId=condtionsVO.getSystemId(); UserVO userVo=condtionsVO.getUser(); //免密登录申请token,request中添加用户信息 //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); try { passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); }catch (Throwable e){ errorid = "1"; log.error("用户鉴权失败",e); throw new Throwable("用户鉴权失败"); } 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); } /* //校验是否配置 boolean checkPass = checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue()); if (!checkPass) { errorid = "101"; throw new Throwable("系统标识为【" + systemId + "】," + sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText() + "接口配置已停用或者未配置,请联系编码管理员!"); } */ //先简称是否有关联模板,有模板要先删除 boolean isCodeOrGroupCode=false; List libIdDos =classifyService.selectByWrapper(Wrappers.query().lambda().eq(CodeClassify::getId,library)); if(!CollectionUtils.isEmpty(libIdDos)){ CodeClassify libCodeClassify=libIdDos.get(0); List codeClassifyList=classifyService.selectByWrapper(Wrappers.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); } String operation=""; if(CODE_CHECKCONFIG) { //校验是否配置 DockingSystemConfig dockingSystemConfig= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue(),currentCodeClassify[0].getOid()); if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){ errorid ="101"; throw new Throwable("系统标识为【"+ systemId +"】,集成分类为【"+currentCodeClassify[0].getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText()+"接口配置已停用或者未配置,请联系编码管理员!"); } isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false; } List dataCodeClassifyVOList =new ArrayList<>(); String oid= currentCodeClassify[0].getOid(); TreeQueryObject treeQueryObject=new TreeQueryObject(); treeQueryObject.setParentOid(oid); treeQueryObject.setQueryAllLevel(true); dataCodeClassifyVOList=classifyService.selectAllClassifyByOid(oid,"oid");//.selectCodeClassifyDOByTree(treeQueryObject); //dataCodeClassifyVOList.add(CodeClassifyWrapper.build().entityVO(currentCodeClassify[0])); Map oidCodeclassifyDOMap = dataCodeClassifyVOList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); List propertyVOS=condtionVO.getPro(); ListstatusList=new ArrayList<>(); statusList.add(CodeDefaultLC.RELEASED.getValue()); statusList.add(CodeDefaultLC.DISABLE.getValue()); statusList.add(CodeDefaultLC.TASK_BACK.getValue()); String tableName=""; R r = btmTypeClient.getAllAttributeByBtmId(libCodeClassify.getBtmTypeId()); if(!r.isSuccess()) { throw new Throwable(r.getMsg()); } BtmTypeVO btmTypeVO = r.getData(); if (btmTypeVO == null) { throw new Throwable("根据业务类型未查询到业务类型对象!"); } tableName = btmTypeVO.getTableName(); if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) { throw new Throwable("根据业务类型未查询到业务类型相关联的表"); } StringBuffer sb=new StringBuffer(); sb.append(" select * from "); sb.append(tableName); sb.append(" where 1=1"); if(isCodeOrGroupCode){ sb.append(" and groupcode is not null "); } if(!CollectionUtils.isEmpty(propertyVOS)) { propertyVOS.stream().forEach(propertyVO -> { sb.append(" and " + propertyVO.getFiledName() + "='" + propertyVO.getFiledValue() + "'"); }); } sb.append(" and lastr=1 and lastv=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> newDataList = commonsMapper.queryByOnlySqlForMap(sb.toString()); DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true); List clientBusinessObjects= ChangeMapTOClientBusinessObjects(newDataList); List dataObjectVOS=new ArrayList<>(); if(!CollectionUtils.isEmpty(clientBusinessObjects)){ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(currentCodeClassify[0].getOid()); Map filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); boolean finalIsCodeOrGroupCode = isCodeOrGroupCode; clientBusinessObjects.stream().forEach(cbo -> { com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO dataObjectVO=new com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO(); String code=""; if(finalIsCodeOrGroupCode){ code= cbo.getAttributeValue("groupcode"); }else { code=cbo.getId(); } dataObjectVO.setCode(code); 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 propertyVOList=new ArrayList<>(); for(String filed:newQueryFileds){ if(filedAttributeMap.containsKey(filed.toLowerCase(Locale.ROOT))){ String value=cbo.getAttributeValue(filed); CodeClassifyTemplateAttrVO attrVO= filedAttributeMap.get(filed.toLowerCase(Locale.ROOT)); 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); }else{ errorid = "0"; msg = "接口参数:classCode 未查询到对应的数据"; } }else{ errorid = "101"; msg = "接口参数:classCode 未查询到对应的分类信息"; throw new Throwable(msg); } }else{ errorid = "101"; msg = "接口参数:library 未查询到对应的库节点信息"; } }catch (Throwable e){ e.printStackTrace(); msg="查询数据失败:"+e.getMessage(); log.error(msg,e); }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 = "\n" + xStream.toXML(resultDataVO); }else{ Object object = JSONObject.toJSON(resultVO); resultStr = object.toString(); } try { //记录日志 this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryData"); }catch (Throwable e){ log.error("保存日志信息失败:",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); ResultClassifyRuleVO resultClassifyRuleVO =new ResultClassifyRuleVO(); List classifyVOList=new ArrayList<>(); ResultClassifyRuleData resultClassifyRuleData=new ResultClassifyRuleData(); 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 = "接口参数:传入数据参数解析失败"; log.error(msg,e); e.printStackTrace(); throw new Throwable("接口参数:传入数据参数解析失败"); } QueryData queryData=queryClassifyVO.getData(); UserVO userVo=queryData.getUser(); systemId=queryData.getSystemId(); //免密登录申请token,request中添加用户信息 //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); try { passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); }catch (Throwable e){ errorid = "1"; log.error("用户鉴权失败",e); throw new Throwable("用户鉴权失败"); } QueryLibraryVO libraryVO= queryData.getLibrary(); String libId= libraryVO.getId(); List classifyIdList= libraryVO.getClassifyid(); List codeClassifyVOS =new ArrayList<>(); //校验是否配置 boolean checkPass = checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYCLAFILYRULE.getValue()); if (!checkPass) { errorid = "101"; throw new Throwable("系统标识为【" + systemId + "】," + sysIntegrationPushTypeEnum.ACCPET_QUERYCLAFILYRULE.getText() + "接口配置已停用或者未配置,请联系编码管理员!"); } //这是账号信息 //这是账号信息 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 libIdDos = classifyService.selectByWrapper(Wrappers.query().lambda().in(CodeClassify::getId, classifyIdList)); codeClassifyVOS=classifyService.codeClassifyDO2VOs(libIdDos); }else { List libIdDos = classifyService.selectByWrapper(Wrappers.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); } ResultLibraryVO resultLibraryVO=new ResultLibraryVO(); resultLibraryVO.setId(libId); resultLibraryVO.setName(""); if(!CollectionUtils.isEmpty(codeClassifyVOS)){ errorid = "0"; msg="成功!"; codeClassifyVOS.stream().forEach(codeClassifyDO -> { //后去包含码段的编码规则 CodeRuleVO codeRuleVO= this.engineService.getCodeRuleByClassifyOid(codeClassifyDO.getOid()); ResultCodeRuleVO resultCodeRuleVO=new ResultCodeRuleVO(); if(codeRuleVO!=null){ CodeRuleVO resultClassifyRuleVO1=new CodeRuleVO(); List codeBasicSecVOS= codeRuleVO.getSecVOList(); List codeSectionVOList=new CopyOnWriteArrayList<>(); Map> secIdTOListValueOidMap=new HashMap<>(); if(!CollectionUtils.isEmpty(codeBasicSecVOS)){ codeBasicSecVOS.stream().forEach(codeBasicSecVO -> { List codeSectionValueVOList=new ArrayList<>(); String secType= codeBasicSecVO.getSecType(); if(secType.equals("codevariablesec")){//可变码段 //空着,前端传 }else if(secType.equals("codefixedsec")){//固定码段 List fixedValueVOList=codeBasicSecVO.getFixedValueVOList(); fixedValueVOList.stream().forEach(codeFixedValueVO -> { String id=StringUtils.isBlank(codeFixedValueVO.getOid())?"":codeFixedValueVO.getOid(); String value=StringUtils.isBlank(codeFixedValueVO.getId())?"":codeFixedValueVO.getId(); String num=StringUtils.isBlank(codeFixedValueVO.getOrderNum()+"")?"":codeFixedValueVO.getOrderNum()+""; String name=StringUtils.isBlank(codeFixedValueVO.getName())?"":codeFixedValueVO.getName(); String description=StringUtils.isBlank(codeFixedValueVO.getDescription())?"":codeFixedValueVO.getDescription(); CodeSectionValueVO sectionValueVO=new CodeSectionValueVO(id,num,value,id,"",description); codeSectionValueVOList.add(sectionValueVO); }); }else if(secType.equals("codeclassifysec")){//分类码段 String secOid=codeBasicSecVO.getOid(); String parentClassifySecOid= codeBasicSecVO.getParentClassifySecOid(); String parentClassifyValueOid=""; if(secIdTOListValueOidMap.containsKey(parentClassifySecOid)){ List parentClassifyValueList= secIdTOListValueOidMap.get(parentClassifySecOid); parentClassifyValueOid=VciBaseUtil.array2String(parentClassifyValueList.toArray(new String[]{})); } List codeClassifyValueVOS= this.codeClassifyValueService.listCodeClassifyValueBySecOid(secOid,parentClassifyValueOid); if(!CollectionUtils.isEmpty(codeClassifyValueVOS)){ ListvalueOidList=new ArrayList<>(); codeClassifyValueVOS.stream().forEach(codeClassifyValueVO -> { String id=StringUtils.isBlank(codeClassifyValueVO.getOid())?"":codeClassifyValueVO.getOid(); String value=StringUtils.isBlank(codeClassifyValueVO.getId())?"":codeClassifyValueVO.getId(); String num=StringUtils.isBlank(codeClassifyValueVO.getOrderNum()+"")?"":codeClassifyValueVO.getOrderNum()+""; String name=StringUtils.isBlank(codeClassifyValueVO.getName())?"":codeClassifyValueVO.getName(); String pid=StringUtils.isBlank(codeClassifyValueVO.getParentClassifyValueOid())?"":codeClassifyValueVO.getParentClassifyValueOid(); String description=StringUtils.isBlank(codeClassifyValueVO.getDescription())?"":codeClassifyValueVO.getDescription(); CodeSectionValueVO sectionValueVO=new CodeSectionValueVO(id,num,value,name,pid,description); codeSectionValueVOList.add(sectionValueVO); valueOidList.add(id); }); secIdTOListValueOidMap.put(secOid,valueOidList); } }else if(secType.equals("codedatesec")){//日期码段 //空着,前端传 }else if(secType.equals("coderefersec")){//引用码段 codeBasicSecVO.getReferAttributeId(); codeBasicSecVO.getReferCodeClassifyOid(); String referBtmId=codeBasicSecVO.getReferBtmId(); String btmName=codeBasicSecVO.getReferBtmName(); String referConfig= codeBasicSecVO.getReferConfig(); CoderefersecSearchVO coderefersecSearchVO=new CoderefersecSearchVO(); if(StringUtils.isNotBlank(referConfig)){ coderefersecSearchVO = JSONObject.toJavaObject(JSONObject.parseObject(referConfig), CoderefersecSearchVO.class); } String buildSqlwhere=""; if(coderefersecSearchVO!=null) { if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.DEFAULT.getValue()) || coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.GRID.getValue())) {//默认样式/列表 Map condtionMap = new HashMap<>(); List codeSrchCondConfigVOList = coderefersecSearchVO.getCodeSrchCondConfigVOS(); if (!CollectionUtils.isEmpty(codeSrchCondConfigVOList)) { codeSrchCondConfigVOList.stream().forEach(codeSrchCondConfigVO -> { condtionMap.put(codeSrchCondConfigVO.getFilterField() + codeSrchCondConfigVO.getFilterType(), codeSrchCondConfigVO.getFilterValue()); }); buildSqlwhere = UBCSSqlKeyword.buildSqlwhere(condtionMap); } //使用传入的业务类型查询表 R> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId)); if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("传入业务类型未查询到相应表单,请检查!"); } String referTable = listR.getData().get(0).getTableName(); StringBuffer sb = new StringBuffer(); sb.append(" select * from "); sb.append(referTable); sb.append(" where 1=1 "); if (StringUtils.isNotBlank(buildSqlwhere)) { sb.append(buildSqlwhere); } List ListMap = commonsMapper.selectBySql(sb.toString()); String valueField = coderefersecSearchVO.getValueField(); String textField = coderefersecSearchVO.getTextField(); final int[] num = {0}; if (!CollectionUtils.isEmpty(ListMap)) { ListMap.stream().forEach(map -> { num[0]++; String id =Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString(); String value = Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString(); String text =Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString(); String description =Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString(); CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, id, "", description); codeSectionValueVOList.add(sectionValueVO); }); } } else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.TREE.getValue())) {//树形 Map condtionMap = new HashMap<>(); //使用传入的业务类型查询表 R> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId)); if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("传入业务类型未查询到相应表单,请检查!"); } String referTable = listR.getData().get(0).getTableName(); String oidFieldName = StringUtils.isNotBlank(coderefersecSearchVO.getParentUsedField())?coderefersecSearchVO.getParentUsedField():coderefersecSearchVO.getValueField(); String parentValue =coderefersecSearchVO.getParentValue(); String parentFieldName =StringUtils.isBlank(coderefersecSearchVO.getParentFieldName())?"":coderefersecSearchVO.getParentFieldName(); List codeSrchCondConfigVOList = coderefersecSearchVO.getCodeSrchCondConfigVOS(); List codeShowFieldConfigVOS=coderefersecSearchVO.getCodeShowFieldConfigVOS(); if (!CollectionUtils.isEmpty(codeSrchCondConfigVOList)) { codeSrchCondConfigVOList.stream().forEach(codeSrchCondConfigVO -> { condtionMap.put(codeSrchCondConfigVO.getFilterField() + codeSrchCondConfigVO.getFilterType(), codeSrchCondConfigVO.getFilterValue()); }); buildSqlwhere = UBCSSqlKeyword.buildSqlwhere(condtionMap); } //if("all".equals(coderefersecSearchVO.getLoadType())) { String parentOidSql = ""; if(StringUtils.isNotBlank(parentValue)){ String temp=parentValue; if(temp.startsWith(QueryOptionConstant.IN)){ temp = temp.substring((QueryOptionConstant.IN).length()).trim(); parentOidSql = " in " + ((temp.startsWith("(") && temp.endsWith(")"))?temp:"(" + temp + ")"); }else if(temp.startsWith(QueryOptionConstant.NOTIN)){ parentOidSql = " not in " + ((temp.startsWith("(") && temp.endsWith(")"))?temp:"(" + temp + ")"); }else if(temp.startsWith(QueryOptionConstant.NOTEQUAL)){ temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim(); parentOidSql = QueryOptionConstant.NOTEQUAL + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if(temp.startsWith(QueryOptionConstant.MORETHAN)){ temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim(); parentOidSql = QueryOptionConstant.MORETHAN + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if(temp.startsWith(QueryOptionConstant.MORE)){ temp = temp.substring((QueryOptionConstant.MORE).length()).trim(); parentOidSql = QueryOptionConstant.MORE + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if(temp.startsWith(QueryOptionConstant.LESSTHAN)){ temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim(); parentOidSql = QueryOptionConstant.LESSTHAN + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if(temp.startsWith(QueryOptionConstant.LESS)){ temp = temp.substring((QueryOptionConstant.LESS).length()).trim(); parentOidSql = QueryOptionConstant.LESS + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) { parentOidSql = " is not null"; } else if (temp.startsWith(QueryOptionConstant.ISNULL)) { parentOidSql = " is null"; } else if(temp.contains("*")){ parentOidSql = " like " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'").replace("*","%"); }else { parentOidSql = " = " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); } } //查询全部的信息 buildSqlwhere+= " and oid in (select oid from " +referTable + " START WITH " + coderefersecSearchVO.getParentFieldName() + " "+ parentOidSql + " CONNECT BY PRIOR " + oidFieldName + " = " + parentFieldName + ")"; /*}else{ if(StringUtils.isNotBlank(coderefersecSearchVO.getParentFieldName()) && StringUtils.isNotBlank(parentValue)){ buildSqlwhere+=" and "+coderefersecSearchVO.getParentFieldName()+"= '"+parentValue+"'"; } }*/ StringBuffer sb = new StringBuffer(); sb.append(" select * from "); sb.append(referTable); sb.append(" where 1=1 "); if (StringUtils.isNotBlank(buildSqlwhere)) { sb.append(buildSqlwhere); } List ListMap = commonsMapper.selectBySql(sb.toString()); String valueField = coderefersecSearchVO.getValueField(); String textField = coderefersecSearchVO.getTextField(); final int[] num = {0}; if (!CollectionUtils.isEmpty(ListMap)) { ListMap.stream().forEach(map -> { num[0]++; String id =Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString(); String value =Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString(); String text =Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString(); String description =Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString(); String pid =Func.isNull(map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString(); CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, pid, description); codeSectionValueVOList.add(sectionValueVO); }); } } else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.ORGDEPARTMENTGRIDREFERS.getValue()) ||////部门列表 coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.ORGDEPARTMENTREFER.getValue())//部门树 ) { R> r = sysClient.deptList(""); if (r.isSuccess()) { List deptVOList = r.getData(); if (!CollectionUtils.isEmpty(deptVOList)) { deptVOList.stream().forEach(deptVO -> { String id = String.valueOf(deptVO.getId()); int num = deptVO.getSort(); String value = String.valueOf(deptVO.getId()); String text = deptVO.getDeptName(); String description = deptVO.getRemark(); String pid = deptVO.getParentId() + ""; CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num + "", value, text, pid, description); codeSectionValueVOList.add(sectionValueVO); }); } } } else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.SMUSERREFER.getValue())//用户 || coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.SMUSERGRIDREFER.getValue())//用户列表 ) { R> r=userClient.selectAllUser(); if (r.isSuccess()) { List userList = r.getData(); if (!CollectionUtils.isEmpty(userList)) { final int[] num = {0}; userList.stream().forEach(user -> { String value=StringUtils.isBlank(user.getAccount())?"":user.getAccount(); //String value= String.valueOf(StringUtils.isBlank(user.getCode())?"":user.getCode()); String text=StringUtils.isBlank(user.getName())?"":user.getName(); String pid=user.getDeptId(); num[0]++; String description=""; String id= String.valueOf(user.getId()); CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, pid, description); codeSectionValueVOList.add(sectionValueVO); }); } } } else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.SMROLEREFER.getValue())) {//角色列表 R> r = sysClient.roleTree(""); if (r.isSuccess()) { List roleVOList = r.getData(); if (!CollectionUtils.isEmpty(roleVOList)) { roleVOList.stream().forEach(roleVO -> { String id = String.valueOf(roleVO.getId()); int num = roleVO.getSort(); String value = String.valueOf(roleVO.getId()); String text = roleVO.getRoleName(); String description = roleVO.getRoleAlias(); String pid = roleVO.getParentId() + ""; CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num + "", value, text, pid, description); codeSectionValueVOList.add(sectionValueVO); }); } } } else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.ORGDUTYREFER.getValue())) {//职务 } else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.SMWORKTYPEREFER.getValue())) {//工种 } else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.WFPROCESSTEMPLATEREFER.getValue())) {//流程模板 } } log.info(libId); }else if(secType.equals("codelevelsec")) {//层级码段 CodeClassifyVO levelCodeClassifyVO = new CodeClassifyVO(); CodeClassifyFullInfoBO classifyFullInfoBO = this.classifyService.getClassifyFullInfo(codeClassifyDO.getOid()); if(codeBasicSecVO.getCodeLevelType().equals("code_level_special")){//指定层级 int level = codeBasicSecVO.getCodeLevelValue(); List classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); if (classifyVOS.size() >= level && level > 0) { levelCodeClassifyVO = classifyVOS.get(level - 1); } }else{//最小层 levelCodeClassifyVO=codeClassifyDO; } String id=StringUtils.isBlank(levelCodeClassifyVO.getOid())?"":levelCodeClassifyVO.getOid(); String num=""; String value=StringUtils.isBlank(levelCodeClassifyVO.getId())?"":levelCodeClassifyVO.getId(); String name=StringUtils.isBlank(levelCodeClassifyVO.getName())?"":levelCodeClassifyVO.getName(); String description=StringUtils.isBlank(levelCodeClassifyVO.getDescription())?"":levelCodeClassifyVO.getDescription(); CodeSectionValueVO sectionValueVO=new CodeSectionValueVO(id,num,value,name,"",description); codeSectionValueVOList.add(sectionValueVO); }else if(secType.equals("codeattrsec")){//属性码段 codeBasicSecVO.getReferAttributeId(); codeBasicSecVO.getReferCodeClassifyOid(); codeBasicSecVO.getReferBtmId(); codeBasicSecVO.getReferBtmName(); }else if(secType.equals("codeserialsec")){//流水码段 } //构建规则码段 CodeSectionVO codeSectionVO=new CodeSectionVO(); codeSectionVO.setId(StringUtils.isBlank(codeBasicSecVO.getOid())?"":codeBasicSecVO.getOid());//主键 codeSectionVO.setName(StringUtils.isBlank(codeBasicSecVO.getName())?"":codeBasicSecVO.getName());//码段名称 codeSectionVO.setCodeSecLength(StringUtils.isBlank(codeBasicSecVO.getCodeSecLength())?"":codeBasicSecVO.getCodeSecLength());//码段长度 codeSectionVO.setNum(StringUtils.isBlank(codeBasicSecVO.getOrderNum()+"")?"":codeBasicSecVO.getOrderNum()+"");//码段序号 codeSectionVO.setCodeDateFormatStr(StringUtils.isBlank(codeBasicSecVO.getCodeDateFormatStr())?"":codeBasicSecVO.getCodeDateFormatStr());//日期类型 codeSectionVO.setCodeSecLengthType(StringUtils.isBlank(codeBasicSecVO.getCodeSecLengthType())?"":codeBasicSecVO.getCodeSecLengthType());//码段长度类型 codeSectionVO.setPkCodeRule(StringUtils.isBlank(codeRuleVO.getOid())?"":codeRuleVO.getOid());//规则主键 codeSectionVO.setSecType(StringUtils.isBlank(codeBasicSecVO.getSecType())?"":codeBasicSecVO.getSecType());//码段类型 codeSectionVO.setDescription(StringUtils.isBlank(codeBasicSecVO.getDescription())?"":codeBasicSecVO.getDescription());//描述 codeSectionVO.setParentClassifySecOid(StringUtils.isBlank(codeBasicSecVO.getParentClassifySecOid())?"":codeBasicSecVO.getParentClassifySecOid());//分类码段上级 codeSectionVO.setSecTypeText(StringUtils.isBlank(codeBasicSecVO.getSecTypeText())?"":codeBasicSecVO.getSecTypeText()); //if(!CollectionUtils.isEmpty(codeSectionValueVOList)) { codeSectionVO.setSectionValue(codeSectionValueVOList); //} codeSectionVO.setSectionCode(codeBasicSecVO.getId());//码段编号 codeSectionVOList.add(codeSectionVO); }); } //构建规则信息 resultCodeRuleVO.setId(StringUtils.isBlank(codeRuleVO.getOid())?"":codeRuleVO.getOid());//主键 resultCodeRuleVO.setNum("");//序号 resultCodeRuleVO.setName(StringUtils.isBlank(codeRuleVO.getName())?"":codeRuleVO.getName());//名称设置 resultCodeRuleVO.setRuleCode(StringUtils.isBlank(codeRuleVO.getId())?"":codeRuleVO.getId());//规则编号 resultCodeRuleVO.setDescription(StringUtils.isBlank(codeRuleVO.getDescription())?"":codeRuleVO.getDescription());//描述 resultCodeRuleVO.setCodeSection(codeSectionVOList); } //构建分类信息 com.vci.ubcs.code.vo.webserviceModel.coderule.ResultClassifyVO classifyVO=new com.vci.ubcs.code.vo.webserviceModel.coderule.ResultClassifyVO(); classifyVO.setId(StringUtils.isBlank(codeClassifyDO.getOid())?"":codeClassifyDO.getOid()); classifyVO.setLcStatus(StringUtils.isBlank(codeClassifyDO.getLcStatus())?"":codeClassifyDO.getLcStatus()); classifyVO.setClassCode(StringUtils.isBlank(codeClassifyDO.getId())?"":codeClassifyDO.getId()); classifyVO.setDescription(StringUtils.isBlank(codeClassifyDO.getDescription())?"":codeClassifyDO.getDescription()); classifyVO.setName(StringUtils.isBlank(codeClassifyDO.getName())?"":codeClassifyDO.getName()); classifyVO.setPid(StringUtils.isBlank(codeClassifyDO.getParentCodeClassifyOid())?"":codeClassifyDO.getParentCodeClassifyOid()); classifyVO.setFullPathName(StringUtils.isBlank(codeClassifyDO.getPath())?"":codeClassifyDO.getPath()); classifyVO.setCodeRule(resultCodeRuleVO); classifyVOList.add(classifyVO); }); resultLibraryVO.setClassify(classifyVOList); }else{ errorid = "100"; msg="未查询到相关的分类信息"; } issucess=true; resultClassifyRuleData.setLibrary(resultLibraryVO); }catch (Throwable e){ e.printStackTrace(); msg="查询分类失败:"+e.getMessage(); log.error("查询分类失败:",e); }finally { resultClassifyRuleData.setErrorid(errorid); resultClassifyRuleData.setMsg(msg); resultClassifyRuleVO.setData(resultClassifyRuleData); } if(dataType.equals("xml")){ //组织返回接口信息 XStream xStream = new XStream(new DomDriver()); xStream.processAnnotations(XMLResultSystemVO.class); xStream.autodetectAnnotations(true); resultStr = "\n" + xStream.toXML(resultClassifyRuleData); }else{ Object object = JSONObject.toJSON(resultClassifyRuleVO); resultStr = object.toString(); } try { //记录日志 this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassifyRule"); }catch (Throwable e){ log.error("保存日志信息失败:",e); e.printStackTrace(); } log.info("返回参数:"+resultStr); return resultStr; } /*** * 标准化生成接口 * @param data 数据信息 * @param dataType 数据格式类型 * @return */ public String applyCodeForBZ(String data,String dataType){ String resultStr = ""; log.info("方法->applyCodeForBZ start"); final String[] errorid = {"0"}; msg="成功"; objerrorCode="0"; objerrorMsg="成功"; log.info("申请编码的数据参数:->"+data); log.info("申请编码的数据类型:->"+dataType); String systemId=""; List resultClassfyVOList = new ArrayList<>(); LinkedList resultDataObjectDetailDOs = new LinkedList<>(); try { ClassfyBZVO classfyBZVO = null; if (StringUtils.isBlank(data)) { errorid[0] = "101"; throw new Throwable("接口参数:dataString 传递为空"); } ApplyBZParamVO applyBZParamVO = new ApplyBZParamVO(); //如果dataType是xml则,通过xml序列化成对象形式,如果是json则通过json转换成对象格式 try { if ("xml".equals(dataType)) { XStream xStream = new XStream(new DomDriver()); xStream.processAnnotations(ApplyBZVO.class); xStream.autodetectAnnotations(true); ApplyBZVO rootDataVO = (ApplyBZVO) xStream.fromXML(data); applyBZParamVO.setData(rootDataVO); } else { applyBZParamVO = JSONObject.toJavaObject(JSONObject.parseObject(data), ApplyBZParamVO.class); } } catch (Throwable e) { errorid[0] = "101"; log.error("接口参数:传入数据参数解析失败:",e); throw new Throwable("接口参数:传入数据参数解析失败"); } classfyBZVO = applyBZParamVO.getData().getClassify(); systemId = applyBZParamVO.getData().getSystemId(); UserVO userVo = applyBZParamVO.getData().getUser(); //免密登录申请token,request中添加用户信息 //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(), this.getRequest()); try { passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); }catch (Throwable e){ errorid[0] = "1"; log.error("用户鉴权失败:",e); throw new Throwable("用户鉴权失败"); } //这是账号信息 SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setUserId(userVo.getUserName()); sessionInfo.setUserName(userVo.getTrueName()); sessionInfo.setIp(userVo.getIp()); VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); String finalSystemId = systemId; String libray=""; boolean isCodeOrGroupCode=false; libray = classfyBZVO.getLibrary(); CodeClassifyVO codeClassifyVO = getClassfy(classfyBZVO,libray); log.info("end:分类查询完毕"); //获取分类模板信息 if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ objerrorCode="100"; throw new Throwable ("根据传输的分类,未获取到分类信息"); } String operation=""; if(CODE_CHECKCONFIG) { //校验是否配置 DockingSystemConfig dockingSystemConfig=null; dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid()); if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){ errorid[0] ="101"; throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!"); } isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false; } CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid()); if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){ objerrorCode="100"; throw new Throwable ("根据传输的分类,未获取系统中对应模板"); } log.info("end:模板查询完毕"); ApplyBZDatasVO applyBZDatasVO = classfyBZVO.getObjects(); DataObjectVO dataObjectVO = new DataObjectVO(); List attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) ).collect(Collectors.toList()); List applyBZDataVOList= applyBZDatasVO.getObject(); if(applyBZDataVOList.size()>1){ objerrorCode="1"; throw new Throwable ("标准申请只支持一条数据申请"); } String finalLibray = libray; ClassfyBZVO finalClassfyBZVO = classfyBZVO; //规则的主键需要去获取 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 codeOrderSecDTOList = getRuleCodeOrderSecDTOs(classfyBZVO.getSections().getSection(), ruleVO,classifyFullInfo); log.info("end:码段获取完毕"); CodeBZApplyDTO codeBZApplyDTO=new CodeBZApplyDTO(); codeBZApplyDTO.setSecDTOList(codeOrderSecDTOList);//分类码段 applyBZDataVOList.stream().forEach(applyBZDataVO -> { String code=""; String id=applyBZDataVO.getId(); try { List proppertyVOList=applyBZDataVO.getProp(); String oldCodeValue=applyBZDataVO.getOldCode(); setPropertyValue(oldCode,oldCodeValue,proppertyVOList);//源标准号 boolean editSeriesFlag= applyBZDataVO.isEditSeriesFlag(); setPropertyValue(isEditSeries,String.valueOf(editSeriesFlag),proppertyVOList);//是否更为系列 boolean seriesFlag=applyBZDataVO.isSeriesFlag(); setPropertyValue(isSeries,String.valueOf(seriesFlag),proppertyVOList);//源标准类型 String operationTypeValue=applyBZDataVO.getOperationType(); setPropertyValue(operationType,operationTypeValue,proppertyVOList);//操作类型1:制定,2:修订 String releaseTimeValue= applyBZDataVO.getReleaseTime(); setPropertyValue(releaseTime,releaseTimeValue,proppertyVOList);//发布时间 String seriesFlow=applyBZDataVO.getSeriesFlow();//系列流水 codeBZApplyDTO.setOldCode(oldCodeValue); codeBZApplyDTO.setReleaseTime(releaseTimeValue); codeBZApplyDTO.setEditSeries(editSeriesFlag); codeBZApplyDTO.setSeries(seriesFlag); codeBZApplyDTO.setOperationType(operationTypeValue); codeBZApplyDTO.setSeriesFlow(seriesFlow); codeBZApplyDTO.setCodeClassifyOid(codeClassifyVO.getOid()); codeBZApplyDTO.setCodeRuleOid(ruleVO.getOid()); codeBZApplyDTO.setTemplateOid(templateVO.getOid()); codeBZApplyDTO.setCreator(applyBZDataVO.getCreator()); codeBZApplyDTO.setLastModifier(applyBZDataVO.getEditor()); codeBZApplyDTO.setLcStatus(applyBZDataVO.getStatus()); ApplyBZDatasVO newApplyBZDatasVO=new ApplyBZDatasVO(); applyBZDataVO.setProp(proppertyVOList); newApplyBZDatasVO.setObject(Arrays.asList(applyBZDataVO)); log.info("end:数据组织完毕"); this.getConfigDatas(finalSystemId, finalLibray, newApplyBZDatasVO, attrVOS, dataObjectVO); log.info("end:数据组织完毕"); codeBZApplyDTO.setData(dataObjectVO.getRowData().get(0).getFiledValue()); code=engineService.addSaveBZCodeNotauthUser(codeBZApplyDTO,false); msg="编码申请成功:编码为:"+code; } catch (Throwable e) { objerrorCode = "1"; msg="编码申请失败:" +e.getMessage(); log.error(msg,e); e.printStackTrace(); }finally { XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); xmlResultDataObjectDetailDO.setCode(code); xmlResultDataObjectDetailDO.setId(id); xmlResultDataObjectDetailDO.setErrorid(objerrorCode); xmlResultDataObjectDetailDO.setMsg(msg); resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); } }); XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO(); resultClassfyVO.setClassCode(finalClassfyBZVO.getClassCode()); resultClassfyVO.setLibrary(finalClassfyBZVO.getLibrary()); resultClassfyVO.setFullclsfNamePath(finalClassfyBZVO.getFullclsfNamePath()); resultClassfyVO.setObjects(resultDataObjectDetailDOs); resultClassfyVOList.add(resultClassfyVO); XMLResultSystemVO xmlResultSystemVO = new XMLResultSystemVO(); xmlResultSystemVO.setClassifys(resultClassfyVOList); xmlResultSystemVO.setMsg(msg); xmlResultSystemVO.setErrorid(errorid[0]); resultStr = transferResultXMl(xmlResultSystemVO, dataType); }catch (Throwable e){ e.printStackTrace(); msg="申请编码失败:"+e.getMessage(); log.error(msg,e); }finally { XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO(); xmlResultSystemVO.setClassifys(resultClassfyVOList); xmlResultSystemVO.setMsg(msg); xmlResultSystemVO.setErrorid(errorid[0]); resultStr= transferResultXMl(xmlResultSystemVO,dataType); final boolean[] issucess = {true}; if(!errorid[0].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("201")||objec.getErrorid().equals("205") || objec.getErrorid().equals("204"))) { issucess[0] = false; } msg=objec.getMsg(); }); }); } } try { //记录日志 this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCodeForBZ"); }catch (Throwable e){ log.error("保存日志信息失败:",e); e.printStackTrace(); } } log.info("返回参数:"+resultStr); //调用集团申请接口申请集团码 return resultStr; } private void setPropertyValue(String key,String value,List proppertyVOList){ ProppertyVO proppertyVO=new ProppertyVO(); proppertyVO.setKey(key); proppertyVO.setValue(StringUtils.isBlank(value)?"":value); proppertyVOList.add(proppertyVO); } /*** * 查询校验分类信息 * @param classfyVO */ private CodeClassifyVO getClassfy(ClassfyVO classfyVO,String libray) throws Throwable{ CodeClassifyVO classifyVO = new CodeClassifyVO(); try { String classCode = classfyVO.getClassCode(); String className = classfyVO.getFullclsfNamePath(); //根据分类代号查询分类信息 if (StringUtils.isNotBlank(classfyVO.getClassCode())) { Map conditionMap = new HashMap<>(); List codeClassifyList = classifyService.selectByWrapper(Wrappers.query().lambda().eq(CodeClassify::getId, classCode)); final CodeClassify[] newCodeClassify = {new CodeClassify()}; if (!CollectionUtils.isEmpty(codeClassifyList)) { codeClassifyList.stream().forEach(codeClassify -> { CodeClassifyVO codeClassifyVO= classifyService.getTopClassifyVO(codeClassify.getOid()); if(codeClassifyVO.getId().toUpperCase(Locale.ROOT).equals(libray.toUpperCase(Locale.ROOT))){ newCodeClassify[0] =codeClassify; } }); classifyVO = new CodeClassifyVO(); BeanUtilForVCI.copyPropertiesIgnoreCase(newCodeClassify[0], classifyVO); //将DTO转换为DO if(StringUtils.isBlank(classifyVO.getOid())){ throw new Throwable("申请编码的分类:【"+classCode+"】不属于库节点【"+libray+"】,请检查参数分类节点/库节点信息是否匹配"); } }else{ throw new Throwable("根据分类代号未查询到相应的分类信息"); } } else { classifyVO = classifyService.getObjectByClsfNamePath(className.replace(separator, "/")); if(StringUtils.isBlank(classifyVO.getOid())){ throw new Throwable("根据分类名称路径未查询到相应的分类信息"); } } }catch (Throwable e){ objerrorCode="100"; log.error("获取分类信息失败:",e); throw new Throwable("获取分类信息失败:"+e.getMessage()); } return classifyVO; } /*** * 查询校验分类信息 * @param classfyVO */ private CodeClassifyVO getClassfy(ClassfyBZVO classfyVO,String libray) throws Throwable{ CodeClassifyVO classifyVO = new CodeClassifyVO(); try { String classCode = classfyVO.getClassCode(); String className = classfyVO.getFullclsfNamePath(); //根据分类代号查询分类信息 if (StringUtils.isNotBlank(classfyVO.getClassCode())) { Map conditionMap = new HashMap<>(); List codeClassifyList = classifyService.selectByWrapper(Wrappers.query().lambda().eq(CodeClassify::getId, classCode)); final CodeClassify[] newCodeClassify = {new CodeClassify()}; if (!CollectionUtils.isEmpty(codeClassifyList)) { codeClassifyList.stream().forEach(codeClassify -> { CodeClassifyVO codeClassifyVO= classifyService.getTopClassifyVO(codeClassify.getOid()); if(codeClassifyVO.getId().toUpperCase(Locale.ROOT).equals(libray.toUpperCase(Locale.ROOT))){ newCodeClassify[0] =codeClassify; } }); classifyVO = new CodeClassifyVO(); BeanUtilForVCI.copyPropertiesIgnoreCase(newCodeClassify[0], classifyVO); //将DTO转换为DO if(StringUtils.isBlank(classifyVO.getOid())){ throw new Throwable("申请编码的分类:【"+classCode+"】不属于库节点【"+libray+"】,请检查参数分类节点/库节点信息是否匹配"); } }else{ throw new Throwable("根据分类代号未查询到相应的分类信息"); } } else { classifyVO = classifyService.getObjectByClsfNamePath(className.replace(separator, "/")); if(StringUtils.isBlank(classifyVO.getOid())){ throw new Throwable("根据分类名称路径未查询到相应的分类信息"); } } }catch (Throwable e){ objerrorCode="100"; log.error("获取分类信息失败:",e); throw new Throwable("获取分类信息失败:"+e.getMessage()); } return classifyVO; } private List ChangeMapTOClientBusinessObjects(List> oldDataMap){ List clientBusinessObjectList=new ArrayList<>(); DefaultAttrAssimtUtil.mapToLowerCase(oldDataMap,true); final BladeUser user = AuthUtil.getUser(); oldDataMap.stream().forEach(dataMap->{ ClientBusinessObject clientBusinessObject=new ClientBusinessObject(); DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,false,user); for (String key:dataMap.keySet()){ Object value= dataMap.getOrDefault(key,""); clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString()); } clientBusinessObjectList.add(clientBusinessObject); }); return clientBusinessObjectList; } private List getRuleCodeOrderSecDTOsBZ(CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo){ List codeBasicSecVOS= ruleVO.getSecVOList(); List codeOrderSecDTOList=new ArrayList<>(); Map errorMap=new HashMap<>(); for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) { String sectype = codeBasicSecVO.getSecType(); String classifySecOid= codeBasicSecVO.getOid(); String message=""; } return codeOrderSecDTOList; } /** * 根据传入的参数信息校验码段规则 * @param SectionVOList * @param ruleVO * @param classifyFullInfo * @return * @throws Throwable */ private List getRuleCodeOrderSecDTOs(List SectionVOList,CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo) throws Throwable{ List codeBasicSecVOS= ruleVO.getSecVOList(); Map sectionVOMap=new HashMap<>(); SectionVOList.stream().forEach(SectionVO->{ sectionVOMap.put(SectionVO.getName(),SectionVO.getValue()); }); //Map codeClassifyVOMap= classifyFullInfo.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getId(), t -> t,(o1, o2)->o2)); List codeOrderSecDTOList=new ArrayList<>(); Map errorMap=new HashMap<>(); for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) { String sectype = codeBasicSecVO.getSecType(); // String newSecName=codeBasicSecVO.getName(); String classifySecOid= codeBasicSecVO.getOid(); String message=""; //#NaN?表示码值为空的场景 String nullSymbol = EnumCache.getValue("nullSymbol", "NULL"); nullSymbol = Func.isBlank(nullSymbol) ? "#NaN?":nullSymbol; 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.getValue().equals(sectype)) {//如果是分类的话,则需要匹配传过来的分类代号与 //先简称是否有关联模板,有模板要先删除 List codeClassifyValueDOList = codeClassifyValueService.list(Wrappers.query().lambda().eq(CodeClassifyValue::getCodeClassifySecOid,classifySecOid)); if (!CollectionUtils.isEmpty(codeClassifyValueDOList)) { Map codeClassifyValueDOMap = codeClassifyValueDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t, (o1, o2) -> o2)); if(codeClassifyValueDOMap.containsKey(sectypeValue) || nullSymbol.equals(sectypeValue)){ CodeClassifyValue codeClassifyValue = codeClassifyValueDOMap.get(sectypeValue); sectypeValue=codeClassifyValue.getOid(); }else { //throw new Throwable("传入的分类码段:【" + name + " 值:" + sectypeValue + "】,不符合当前分类层级代号"); message="传入的分类码段:【" + name + " 值:" + sectypeValue + "】,不符合当前分类层级代号"; errorMap.put("error",errorMap.getOrDefault("error","")+";"+message); } } }else if(CODE_REFER_SEC.getValue().equals(sectype)){ String referBtmId=codeBasicSecVO.getReferBtmId(); String btmName=codeBasicSecVO.getReferBtmName(); String referConfig= codeBasicSecVO.getReferConfig(); CoderefersecSearchVO coderefersecSearchVO=new CoderefersecSearchVO(); if(StringUtils.isNotBlank(referConfig)){ coderefersecSearchVO = JSONObject.toJavaObject(JSONObject.parseObject(referConfig), CoderefersecSearchVO.class); } String buildSqlwhere=""; List codeSectionValueVOList=new ArrayList<>(); if(coderefersecSearchVO!=null) { Map condtionMap = new HashMap<>(); String valueField= coderefersecSearchVO.getValueField(); if(StringUtils.isNotBlank(valueField)){ condtionMap.put(valueField,sectypeValue); } if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.DEFAULT.getValue()) || coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.GRID.getValue())) {//默认样式/列表 List codeSrchCondConfigVOList = coderefersecSearchVO.getCodeSrchCondConfigVOS(); if (!CollectionUtils.isEmpty(codeSrchCondConfigVOList)) { codeSrchCondConfigVOList.stream().forEach(codeSrchCondConfigVO -> { condtionMap.put(codeSrchCondConfigVO.getFilterField() + codeSrchCondConfigVO.getFilterType(), codeSrchCondConfigVO.getFilterValue()); }); } if(!CollectionUtils.isEmpty(condtionMap)) { buildSqlwhere = UBCSSqlKeyword.buildSqlwhere(condtionMap); } //使用传入的业务类型查询表 R> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId)); if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("传入业务类型未查询到相应表单,请检查!"); } String referTable = listR.getData().get(0).getTableName(); StringBuffer sb = new StringBuffer(); sb.append(" select * from "); sb.append(referTable); sb.append(" where 1=1 "); if (StringUtils.isNotBlank(buildSqlwhere)) { sb.append(buildSqlwhere); } List ListMap = commonsMapper.selectBySql(sb.toString()); //String valueField = coderefersecSearchVO.getValueField(); String textField = coderefersecSearchVO.getTextField(); final int[] num = {0}; if (!CollectionUtils.isEmpty(ListMap)) { ListMap.stream().forEach(map -> { num[0]++; String id = Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), "")) ? "" : map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString(); String value = Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "")) ? "" : map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString(); String text = Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), "")) ? "" : map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString(); String description = Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), "")) ? "" : map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString(); CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, id, "", description); codeSectionValueVOList.add(sectionValueVO); }); } }else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.TREE.getValue())) {//树形 //使用传入的业务类型查询表 R> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId)); if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("传入业务类型未查询到相应表单,请检查!"); } String referTable = listR.getData().get(0).getTableName(); String oidFieldName = StringUtils.isNotBlank(coderefersecSearchVO.getParentUsedField())?coderefersecSearchVO.getParentUsedField():coderefersecSearchVO.getValueField(); String parentValue =coderefersecSearchVO.getParentValue(); String parentFieldName =StringUtils.isBlank(coderefersecSearchVO.getParentFieldName())?"":coderefersecSearchVO.getParentFieldName(); List codeSrchCondConfigVOList = coderefersecSearchVO.getCodeSrchCondConfigVOS(); List codeShowFieldConfigVOS=coderefersecSearchVO.getCodeShowFieldConfigVOS(); if (!CollectionUtils.isEmpty(codeSrchCondConfigVOList)) { codeSrchCondConfigVOList.stream().forEach(codeSrchCondConfigVO -> { condtionMap.put(codeSrchCondConfigVO.getFilterField() + codeSrchCondConfigVO.getFilterType(), codeSrchCondConfigVO.getFilterValue()); }); } if(!CollectionUtils.isEmpty(condtionMap)) { buildSqlwhere = UBCSSqlKeyword.buildSqlwhere(condtionMap); } //if("all".equals(coderefersecSearchVO.getLoadType())) { String parentOidSql = ""; if(StringUtils.isNotBlank(parentValue)){ String temp=parentValue; if(temp.startsWith(QueryOptionConstant.IN)){ temp = temp.substring((QueryOptionConstant.IN).length()).trim(); parentOidSql = " in " + ((temp.startsWith("(") && temp.endsWith(")"))?temp:"(" + temp + ")"); }else if(temp.startsWith(QueryOptionConstant.NOTIN)){ parentOidSql = " not in " + ((temp.startsWith("(") && temp.endsWith(")"))?temp:"(" + temp + ")"); }else if(temp.startsWith(QueryOptionConstant.NOTEQUAL)){ temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim(); parentOidSql = QueryOptionConstant.NOTEQUAL + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if(temp.startsWith(QueryOptionConstant.MORETHAN)){ temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim(); parentOidSql = QueryOptionConstant.MORETHAN + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if(temp.startsWith(QueryOptionConstant.MORE)){ temp = temp.substring((QueryOptionConstant.MORE).length()).trim(); parentOidSql = QueryOptionConstant.MORE + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if(temp.startsWith(QueryOptionConstant.LESSTHAN)){ temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim(); parentOidSql = QueryOptionConstant.LESSTHAN + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if(temp.startsWith(QueryOptionConstant.LESS)){ temp = temp.substring((QueryOptionConstant.LESS).length()).trim(); parentOidSql = QueryOptionConstant.LESS + " " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); }else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) { parentOidSql = " is not null"; } else if (temp.startsWith(QueryOptionConstant.ISNULL)) { parentOidSql = " is null"; } else if(temp.contains("*")){ parentOidSql = " like " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'").replace("*","%"); }else { parentOidSql = " = " + ((temp.startsWith("'") && temp.endsWith("'"))?temp:"'" + temp + "'"); } } //查询全部的信息 buildSqlwhere+= " and oid in (select oid from " +referTable + " START WITH " + coderefersecSearchVO.getParentFieldName() + " "+ parentOidSql + " CONNECT BY PRIOR " + oidFieldName + " = " + parentFieldName + ")"; StringBuffer sb = new StringBuffer(); sb.append(" select * from "); sb.append(referTable); sb.append(" where 1=1 "); if (StringUtils.isNotBlank(buildSqlwhere)) { sb.append(buildSqlwhere); } List ListMap = commonsMapper.selectBySql(sb.toString()); String textField = coderefersecSearchVO.getTextField(); final int[] num = {0}; if (!CollectionUtils.isEmpty(ListMap)) { ListMap.stream().forEach(map -> { num[0]++; String id =Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString(); String value =Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString(); String text =Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString(); String description =Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString(); String pid =Func.isNull(map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString(); CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, pid, description); codeSectionValueVOList.add(sectionValueVO); }); } } } if(!CollectionUtils.isEmpty(codeSectionValueVOList)){ Map codeSectionValueVOMap = codeSectionValueVOList.stream().collect(Collectors.toMap(s -> s.getValue(), t -> t, (o1, o2) -> o2)); if(!codeSectionValueVOMap.containsKey(sectypeValue)){ message="传入的编码规则码段:【"+name+"】为"+CODE_REFER_SEC.getText()+",其对应的值【"+sectypeValue+"】,在编码系统不存在"; errorMap.put("error",errorMap.getOrDefault("error","")+";"+message); } }else{ message="传入的编码规则码段:【"+name+"】为"+CODE_REFER_SEC.getText()+",其对应的值【"+sectypeValue+"】,在编码系统不存在"; errorMap.put("error",errorMap.getOrDefault("error","")+";"+message); } } if(StringUtils.isBlank(sectypeValue)&&!name.equals(secName)){ message="传入的码段:【" + name + " 】的值不允许为空"; errorMap.put("error",errorMap.getOrDefault("error","")+";"+message); } CodeOrderSecDTO.setSecValue(sectypeValue); codeOrderSecDTOList.add(CodeOrderSecDTO); } else { message="传入的码段规则缺少" + name; errorMap.put("error",errorMap.getOrDefault("error","")+";"+message); } } } if(errorMap.size()>0){ objerrorCode="101"; throw new Throwable(errorMap.getOrDefault("error","")); } return codeOrderSecDTOList; } /*** * 读取属性映射配置信息 * @param systemId * @param libray * @param applyDatasVO * @param codeClassifyTemplateAttrVOList * @param dataObjectVO * @throws Throwable */ public void getConfigDatas(String systemId,String libray, ApplyBZDatasVO applyDatasVO,List codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable { // LinkedHashMap> dataKeyValueMap=new LinkedHashMap<>(); //如果将数据转换成所需要的数据对象 Map attrMapConfigMap=new HashMap<>(); Map propMaps=new HashMap<>(); log.info("开始读取系统配置文件 start"); Map stringStringMap=attributeMapConfig.getSystem_attrmap(); log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size()); //stringStringMap.put("RLM","D:\\RLM.xml"); if(!CollectionUtils.isEmpty(stringStringMap)) { List libraryClsfDOList=new ArrayList<>(); try { log.info("info:需要读取配置文件"); LibraryDO libraryDO = gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId, stringStringMap); libraryClsfDOList = libraryDO.getClsf(); } catch (Throwable e) { objerrorCode = "1"; e.printStackTrace(); log.error("集成系统属性配置文件读取失败:",e); throw new Throwable("集成系统标识为:【" + systemId + "】,分类库为:【" + libray + "】的集成属性配置文件读取失败"); } // String path = stringStringMap.get(systemId); // 忽略key大小写,获取配置的映射文件路径 String path = VciBaseUtil.getMapStrValueIgnoreCase(stringStringMap,systemId); if (!CollectionUtils.isEmpty(libraryClsfDOList)) { Map> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2)); log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置"); if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) { log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息"); List clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT)); propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2)); log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size()); } else { objerrorCode = "1"; throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置"); } }else{ objerrorCode = "1"; throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置"); } }else{ objerrorCode = "1"; throw new Throwable("未获取到集成属性映射系统配置信息"); } log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end "); LinkedList rowNameList=new LinkedList<>(); LinkedHashMap 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 rowDataList = new LinkedList<>(); List applyBZDataVOList=new ArrayList<>(); if(!CollectionUtils.isEmpty(applyDatasVO.getObject())){ applyBZDataVOList=applyDatasVO.getObject(); } //Map> dataPropMap = applyDataVOList.stream().collect(Collectors.toMap(ApplyDataVO::getId, ApplyDataVO::getProp, (key1, key2) -> key2)); final int[] rowIndex = {0}; applyBZDataVOList.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("create"); rowDatas.setStatus(applyDataVO.getStatus()); rowDatas.setRowIndex(rowIndex[0] + ""); List proppertyVOList = applyDataVO.getProp(); LinkedHashMap integerValueMap = new LinkedHashMap<>(); Map filedValueMap = new HashMap<>(); if (!CollectionUtils.isEmpty(proppertyVOList)) { Map sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey, ProppertyVO::getValue, (key1, key2) -> key2)); Map 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); log.info("xxxxx属性映射值:sourceKey【"+sourceKey+"】——》+targetKey---》"+targetKey+":"+dataValue); 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"; log.error("组织属性映射值失败:",e); throw new Throwable("组织属性映射值失败"); } } /*** * 读取属性映射配置信息 * @param systemId * @param libray * @param applyDatasVO * @param codeClassifyTemplateAttrVOList * @param dataObjectVO * @throws Throwable */ public void getConfigDatas(String systemId,String libray, ApplyDatasVO applyDatasVO,List codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable { LinkedHashMap> dataKeyValueMap=new LinkedHashMap<>(); //如果将数据转换成所需要的数据对象 Map attrMapConfigMap=new HashMap<>(); Map propMaps=new HashMap<>(); log.info("开始读取系统配置文件 start"); Map stringStringMap=attributeMapConfig.getSystem_attrmap(); log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size()); if(!CollectionUtils.isEmpty(stringStringMap)) { List libraryClsfDOList=new ArrayList<>(); try { log.info("info:需要读取配置文件"); LibraryDO libraryDO = gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId, stringStringMap); libraryClsfDOList = libraryDO.getClsf(); } catch (Throwable e) { objerrorCode = "1"; e.printStackTrace(); log.error("集成属性配置文件读取失败:",e); throw new Throwable("集成系统标识为:【" + systemId + "】,分类库为:【" + libray + "】的集成属性配置文件读取失败"); } // String path = stringStringMap.get(systemId); // 忽略key大小写,获取配置的映射文件路径 String path = VciBaseUtil.getMapStrValueIgnoreCase(stringStringMap,systemId); if (!CollectionUtils.isEmpty(libraryClsfDOList)) { Map> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2)); log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置"); if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) { log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息"); List clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT)); propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2)); log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size()); } else { objerrorCode = "1"; throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置"); } }else{ objerrorCode = "1"; throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置"); } }else{ objerrorCode = "1"; throw new Throwable("未获取到集成属性映射系统配置信息"); } log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end "); LinkedList rowNameList=new LinkedList<>(); LinkedHashMap filedIndexMap=new LinkedHashMap<>(); //根据分类模板组织数据 final int[] index = {0}; try { //除去默认的属性.还有只有具有分类注入的才过滤出来 codeClassifyTemplateAttrVOList = codeClassifyTemplateAttrVOList.stream().filter( s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) ).collect(Collectors.toList()); 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 rowDataList = new LinkedList<>(); List applyDataVOList=new ArrayList<>(); if(!CollectionUtils.isEmpty(applyDatasVO.getObject())){ applyDataVOList=applyDatasVO.getObject(); } //Map> 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 proppertyVOList = applyDataVO.getProp(); LinkedHashMap integerValueMap = new LinkedHashMap<>(); Map filedValueMap = new HashMap<>(); if (!CollectionUtils.isEmpty(proppertyVOList)) { Map sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey, ProppertyVO::getValue, (key1, key2) -> key2)); Map 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); log.info("xxxxx属性映射值:sourceKey【"+sourceKey+"】——》+targetKey---》"+targetKey+":"+dataValue); 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"; log.error("组织属性映射值失败:",e); 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);//日志操作类型 dockingLoge.setCreateTime(new Date()); 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 = "\n" + xStream.toXML(resultSystemVO); } else { List resultClassfyVOList =resultSystemVO.getClassifys(); JSONResultDataVO resultDataVO = new JSONResultDataVO(); JSONResultSystemVO jsonResultSystemVO = new JSONResultSystemVO(); JSONResultClassfysVO jsonResultClassfysVO = new JSONResultClassfysVO(); List jSONResultClassfyVOList = new ArrayList<>(); resultClassfyVOList.stream().forEach(resultClassfyVO -> { List xmlResultDataObjectDetailDOS = resultClassfyVO.getObjects(); List 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; } /*** * 校验是否做了配置 * @param systemId,系统标识 * @param type:接口类型 * @param operationType:接口操作类型 * @return */ private boolean checkIspass(String systemId,String type,String operationType){ log.info("systemId:"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)); if(!CODE_CHECKCONFIG) { return true; } //根据类型去查询需要集成的分类或者数据 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(DockingSystemConfig::getUsedFlag, MdmDuckingConstant.SEND_FLAG_TRUE); queryWrapper.eq(DockingSystemConfig::getSysBaseId,systemId); queryWrapper.eq(DockingSystemConfig::getDataFlowType,type); queryWrapper.eq(DockingSystemConfig::getPushType,operationType); return dockingSystemConfigService.count(queryWrapper)>0?true:false; } /*** * 校验是否做了配置 * @param systemId,系统标识 * @param type:接口类型 * @param operationType:接口操作类型 * @return */ private DockingSystemConfig checkIspass(String systemId,String type,String operationType,String classOid){ log.info("systemId:"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)+",classOid:"+classOid); //CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid); List codeClassifyList= classifyService.selectAllLevelParentByOid(classOid); List classifyOids=new ArrayList<>(); if(!CollectionUtils.isEmpty(codeClassifyList)) { classifyOids = codeClassifyList.stream().map(CodeClassify::getOid).collect(Collectors.toList()); }else{ return null; } //classOid=codeClassifyVO.getOid(); //根据类型去查询需要集成的分类或者数据 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(DockingSystemConfig::getUsedFlag, MdmDuckingConstant.SEND_FLAG_TRUE); queryWrapper.eq(DockingSystemConfig::getSysBaseId,systemId); queryWrapper.eq(DockingSystemConfig::getDataFlowType,type); queryWrapper.eq(DockingSystemConfig::getPushType,operationType); if(StringUtils.isNotBlank(classOid)){ queryWrapper.in(DockingSystemConfig::getClassifyOid,classifyOids); } List dockingSystemConfigList=new ArrayList<>(); dockingSystemConfigList= dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper); if(!CollectionUtils.isEmpty(dockingSystemConfigList)){ return dockingSystemConfigList.get(0); }else{ return null; } /*if(!CollectionUtils.isEmpty(dockingSystemConfigList)){ return dockingSystemConfigList.get(0); }else{ if(StringUtils.isNotBlank(codeClassifyVO.getParentCodeClassifyOid())) { return checkIspass(systemId, type, operationType, codeClassifyVO.getParentCodeClassifyOid()); } } if(dockingSystemConfigList.size()>0){ return dockingSystemConfigList.get(0); }else{ return new DockingSystemConfig(); }*/ } }