| | |
| | | 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.system.vo.DeptVO; |
| | | import com.vci.ubcs.system.vo.RoleVO; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.http.auth.AuthenticationException; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | 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.atomic.AtomicBoolean; |
| | |
| | | @Slf4j |
| | | @VciWebservice(path = "/universalInterface") |
| | | public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI { |
| | | |
| | | @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; |
| | | |
| | | /** |
| | | * 主题库分类的服务 |
| | | */ |
| | |
| | | /** |
| | | * 密级的服务 |
| | | */ |
| | | |
| | | @Resource |
| | | private MdmIOService mdmIOService; |
| | | |
| | |
| | | */ |
| | | @Resource |
| | | private IDockingLogeService dockingLogeService; |
| | | @Resource |
| | | private IPasswordFreeLoginService passwordFreeLoginService; |
| | | |
| | | private static String separator="##VCI##"; |
| | | private String errorid="0"; |
| | | private String msg="成功"; |
| | | private String objerrorCode="0"; |
| | | private String objerrorMsg="成功"; |
| | | |
| | | private final ThreadLocal<HttpServletRequest> threadLocal = new ThreadLocal<>(); |
| | | |
| | | @Resource |
| | | private WebServiceContext webServiceContext; |
| | | |
| | | @Override |
| | | public void setThreadLocal(ThreadLocal<HttpServletRequest> 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 传递的数据参数 |
| | |
| | | ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); |
| | | systemId = interParameterVO.getData().getSystemId(); |
| | | UserVO userVo = interParameterVO.getData().getUser(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | |
| | | //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),this.getRequest()); |
| | | AuthUtil.getUser(); |
| | | List<ClassfyVO> classVOList = classfysVO.getClassify(); |
| | | InterParameterVO finalInterParameterVO = interParameterVO; |
| | | |
| | | //这是账号信息 |
| | | SessionInfo sessionInfo = new SessionInfo(); |
| | | sessionInfo.setUserId(userVo.getUserName()); |
| | |
| | | return resultStr; |
| | | } |
| | | |
| | | |
| | | |
| | | /**** |
| | | * 人员数据同步 |
| | | * @param personData |
| | |
| | | if(personData==null){ |
| | | throw new Throwable("传入参数为null"); |
| | | } |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(Locale.ROOT),this.getRequest()); |
| | | masterDataList = personData.getMasterData(); |
| | | String personLibrary = personAndDeptConfig.getPersonLibrary(); |
| | | if (StringUtils.isBlank(personLibrary)) { |
| | |
| | | List<CodeOrderSecDTO> 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")) {//规则之定义为可变码段存储主数据传递过来的数据 |
| | |
| | | orderDTO.setCodeRuleOid(ruleVO.getOid()); |
| | | orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码 |
| | | orderDTO.setData(rowData.getFiledValue()); |
| | | String code=engineService.addSaveCode(orderDTO); |
| | | String code=engineService.addSaveCodeNotauthUser(orderDTO,false); |
| | | if(StringUtils.isNotBlank(code)) { |
| | | StringBuffer sqlsb = new StringBuffer(); |
| | | sqlsb.append(" select * from "); |
| | |
| | | |
| | | return resultOrgData; |
| | | } |
| | | |
| | | /**** |
| | | * 部门数据同步 |
| | | * @param orgData |
| | |
| | | throw new Throwable("传入参数为null"); |
| | | } |
| | | systemCode=orgData.getSystemCode(); |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest()); |
| | | |
| | | orgMasterDataList = orgData.getMasterData(); |
| | | String personLibrary = personAndDeptConfig.getPersonLibrary(); |
| | | if (StringUtils.isBlank(personLibrary)) { |
| | |
| | | List<CodeOrderSecDTO> 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")) {//规则之定义为可变码段存储主数据传递过来的数据 |
| | |
| | | orderDTO.setCodeRuleOid(ruleVO.getOid()); |
| | | orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码 |
| | | orderDTO.setData(rowData.getFiledValue()); |
| | | String code=engineService.addSaveCode(orderDTO); |
| | | String code=engineService.addSaveCodeNotauthUser(orderDTO,false); |
| | | if(StringUtils.isNotBlank(code)) { |
| | | StringBuffer sqlsb = new StringBuffer(); |
| | | sqlsb.append(" select * from "); |
| | |
| | | } |
| | | return resultOrgData; |
| | | } |
| | | |
| | | /*** |
| | | * 统一更新接口(更改状态,更改属性信息)接口 |
| | | * @param data |
| | |
| | | ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); |
| | | systemId = interParameterVO.getData().getSystemId(); |
| | | UserVO userVo = interParameterVO.getData().getUser(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),this.getRequest()); |
| | | List<ClassfyVO> classVOList = classfysVO.getClassify(); |
| | | InterParameterVO finalInterParameterVO = interParameterVO; |
| | | //这是账号信息 |
| | |
| | | QueryData queryData=queryClassifyVO.getData(); |
| | | UserVO userVo=queryData.getUser(); |
| | | systemId=queryData.getSystemId(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); |
| | | |
| | | QueryLibraryVO libraryVO= queryData.getLibrary(); |
| | | String libId= libraryVO.getId(); |
| | | List<String> classifyIdList= libraryVO.getClassifyid(); |
| | |
| | | throw new Throwable("接口参数:账号信息获取失败"); |
| | | } |
| | | List<CodeClassify> libIdDos =classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().in(CodeClassify::getId, libId)); |
| | | if(CollectionUtils.isEmpty(libIdDos)) { |
| | | if(!CollectionUtils.isEmpty(libIdDos)) { |
| | | CodeClassify libCodeClassify =libIdDos.get(0); |
| | | String oid=libCodeClassify.getOid(); |
| | | if (!CollectionUtils.isEmpty(classifyIdList)) { |
| | |
| | | throw new Throwable(msg); |
| | | } |
| | | } else { |
| | | TreeQueryObject treeQueryObject = new TreeQueryObject(); |
| | | /*TreeQueryObject treeQueryObject = new TreeQueryObject(); |
| | | treeQueryObject.setParentOid(oid); |
| | | treeQueryObject.setQueryAllLevel(true); |
| | | codeClassifyVOS = classifyService.selectCodeClassifyDOByTree(treeQueryObject); |
| | | treeQueryObject.setQueryAllLevel(true);*/ |
| | | codeClassifyVOS = classifyService.getIdPathToNamePathByParentId(oid,false); |
| | | } |
| | | }else{ |
| | | errorid = "101"; |
| | |
| | | classifyVO.setDescription(codeClassifyDO.getDescription()); |
| | | classifyVO.setName(codeClassifyDO.getName()); |
| | | classifyVO.setPid(codeClassifyDO.getParentCodeClassifyOid()); |
| | | classifyVO.setFullPathName(codeClassifyDO.getPath()); |
| | | classifyVO.setFullPathName(codeClassifyDO.getNamePath()); |
| | | classifyVOList.add(classifyVO); |
| | | }); |
| | | libraryVo.setClassify(classifyVOList); |
| | |
| | | boolean issucess=false; |
| | | String resultStr = ""; |
| | | String errorid="0"; |
| | | msg="成功"; |
| | | msg = "数据查询成功"; |
| | | String systemId=""; |
| | | log.info("查询分类的数据参数:->"+data); |
| | | log.info("查询分类的数据类型:->"+dataType); |
| | |
| | | CondtionsVO condtionsVO=dataCondtionsVO.getCondtions(); |
| | | systemId=condtionsVO.getSystemId(); |
| | | UserVO userVo=condtionsVO.getUser(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); |
| | | CondtionVO condtionVO= condtionsVO.getCondtion(); |
| | | SessionInfo sessionInfo = new SessionInfo(); |
| | | sessionInfo.setUserId(userVo.getUserName()); |
| | |
| | | TreeQueryObject treeQueryObject=new TreeQueryObject(); |
| | | treeQueryObject.setParentOid(oid); |
| | | treeQueryObject.setQueryAllLevel(true); |
| | | dataCodeClassifyVOList=classifyService.selectCodeClassifyDOByTree(treeQueryObject); |
| | | dataCodeClassifyVOList.add(CodeClassifyWrapper.build().entityVO(currentCodeClassify[0])); |
| | | dataCodeClassifyVOList=classifyService.selectAllClassifyByOid(oid,"oid");//.selectCodeClassifyDOByTree(treeQueryObject); |
| | | //dataCodeClassifyVOList.add(CodeClassifyWrapper.build().entityVO(currentCodeClassify[0])); |
| | | Map<String, CodeClassifyVO> oidCodeclassifyDOMap = dataCodeClassifyVOList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | |
| | | List<PropertyVO> propertyVOS=condtionVO.getPro(); |
| | |
| | | dataObjectVOS.add(dataObjectVO); |
| | | }); |
| | | resultDataVO.setObject(dataObjectVOS); |
| | | }else{ |
| | | errorid = "0"; |
| | | msg = "接口参数:classCode 未查询到对应的数据"; |
| | | } |
| | | }else{ |
| | | errorid = "101"; |
| | |
| | | errorid = "101"; |
| | | msg = "接口参数:library 未查询到对应的库节点信息"; |
| | | } |
| | | errorid = "0"; |
| | | msg = "数据查询成功"; |
| | | }catch (Throwable e){ |
| | | e.printStackTrace();; |
| | | msg="查询数据失败:"+e.getMessage(); |
| | |
| | | return resultStr; |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public String queryClassifyRule(String data, String dataType) throws Throwable { |
| | | |
| | | boolean issucess=false; |
| | | String resultStr = ""; |
| | | String errorid="0"; |
| | |
| | | QueryData queryData=queryClassifyVO.getData(); |
| | | UserVO userVo=queryData.getUser(); |
| | | systemId=queryData.getSystemId(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); |
| | | |
| | | QueryLibraryVO libraryVO= queryData.getLibrary(); |
| | | String libId= libraryVO.getId(); |
| | | List<String> classifyIdList= libraryVO.getClassifyid(); |
| | |
| | | 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,name,"",description); |
| | | CodeSectionValueVO sectionValueVO=new CodeSectionValueVO(id,num,value,id,"",description); |
| | | codeSectionValueVOList.add(sectionValueVO); |
| | | }); |
| | | }else if(secType.equals("codeclassifysec")){//分类码段 |
| | |
| | | if (!CollectionUtils.isEmpty(ListMap)) { |
| | | ListMap.stream().forEach(map -> { |
| | | num[0]++; |
| | | String id = map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString(); |
| | | String value = map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString(); |
| | | String text = map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString(); |
| | | String description = map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString(); |
| | | CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, "", description); |
| | | 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); |
| | | }); |
| | | } |
| | |
| | | if (!CollectionUtils.isEmpty(ListMap)) { |
| | | ListMap.stream().forEach(map -> { |
| | | num[0]++; |
| | | String id = map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString(); |
| | | String value = map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString(); |
| | | String text = map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString(); |
| | | String description = map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString(); |
| | | String pid = map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString(); |
| | | 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); |
| | | }); |
| | |
| | | } |
| | | |
| | | /*** |
| | | * 标准化生成接口 |
| | | * @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<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>(); |
| | | LinkedList<XMLResultDataObjectDetailDO> 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(RootDataVO.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"; |
| | | throw new Throwable("接口参数:传入数据参数解析失败"); |
| | | } |
| | | classfyBZVO = applyBZParamVO.getData().getClassify(); |
| | | systemId = applyBZParamVO.getData().getSystemId(); |
| | | UserVO userVo = applyBZParamVO.getData().getUser(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(), this.getRequest()); |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest()); |
| | | AuthUtil.getUser(); |
| | | //这是账号信息 |
| | | SessionInfo sessionInfo = new SessionInfo(); |
| | | sessionInfo.setUserId(userVo.getUserName()); |
| | | sessionInfo.setUserName(userVo.getTrueName()); |
| | | sessionInfo.setIp(userVo.getIp()); |
| | | VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); |
| | | // List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>(); |
| | | 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){ |
| | | 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:模板查询完毕"); |
| | | ApplyBZDatasVO applyBZDatasVO = classfyBZVO.getObjects(); |
| | | DataObjectVO dataObjectVO = new DataObjectVO(); |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ).collect(Collectors.toList()); |
| | | List<ApplyBZDataVO> applyBZDataVOList= applyBZDatasVO.getObject(); |
| | | String finalLibray = libray; |
| | | ClassfyBZVO finalClassfyBZVO = classfyBZVO; |
| | | applyBZDataVOList.stream().forEach(applyBZDataVO -> { |
| | | try { |
| | | this.getConfigDatas(finalSystemId, finalLibray, applyBZDatasVO, attrVOS, dataObjectVO); |
| | | log.info("end:数据组织完毕"); |
| | | //规则的主键需要去获取 |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid()); |
| | | if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){ |
| | | objerrorCode="1"; |
| | | log.info("classifyFullInfo:"+"根据传输的分类,未获取分类相关信息"); |
| | | throw new Throwable ("根据传输的分类,未获取分类相关信息"); |
| | | } |
| | | CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); |
| | | if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){ |
| | | objerrorCode="102"; |
| | | throw new Throwable ("根据传输的分类,未获取MDM系统中对应规则"); |
| | | } |
| | | log.info("end:规则获取完毕"); |
| | | //List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(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<ApplyBZDataVO> applyDataVOList = finalClassfyBZVO.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(); |
| | | } |
| | | }); |
| | | 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(); |
| | | }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("204"))) { |
| | | issucess[0] = false; |
| | | msg=objec.getMsg(); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | } |
| | | try { |
| | | //记录日志 |
| | | this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCodeForBZ"); |
| | | }catch (Throwable e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | log.info("返回参数:"+resultStr); |
| | | //调用集团申请接口申请集团码 |
| | | return resultStr; |
| | | } |
| | | /*** |
| | | * 查询校验分类信息 |
| | | * @param classfyVO |
| | | */ |
| | |
| | | if (!CollectionUtils.isEmpty(codeClassifyList)) { |
| | | codeClassifyList.stream().forEach(codeClassify -> { |
| | | CodeClassifyVO codeClassifyVO= classifyService.getTopClassifyVO(codeClassify.getOid()); |
| | | if(codeClassifyVO.getId().equals(libray)){ |
| | | 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"; |
| | | 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<String, String> conditionMap = new HashMap<>(); |
| | | List<CodeClassify> codeClassifyList = classifyService.selectByWrapper(Wrappers.<CodeClassify>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; |
| | | } |
| | | }); |
| | |
| | | }); |
| | | return clientBusinessObjectList; |
| | | } |
| | | |
| | | |
| | | private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOsBZ(CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo){ |
| | | List<CodeBasicSecVO> codeBasicSecVOS= ruleVO.getSecVOList(); |
| | | List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>(); |
| | | Map<String,String> errorMap=new HashMap<>(); |
| | | for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) { |
| | | String sectype = codeBasicSecVO.getSecType(); |
| | | String classifySecOid= codeBasicSecVO.getOid(); |
| | | String message=""; |
| | | } |
| | | return codeOrderSecDTOList; |
| | | } |
| | | |
| | | |
| | | /*** |
| | | * 根据穿入的参数信息校验码段规则 |
| | | */ |
| | |
| | | SectionVOList.stream().forEach(SectionVO->{ |
| | | sectionVOMap.put(SectionVO.getName(),SectionVO.getValue()); |
| | | }); |
| | | Map<String,CodeClassifyVO> codeClassifyVOMap= classifyFullInfo.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getId(), t -> t,(o1, o2)->o2)); |
| | | //Map<String,CodeClassifyVO> codeClassifyVOMap= classifyFullInfo.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getId(), t -> t,(o1, o2)->o2)); |
| | | List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>(); |
| | | Map<String,String> errorMap=new HashMap<>(); |
| | | for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) { |
| | |
| | | } |
| | | return codeOrderSecDTOList; |
| | | } |
| | | |
| | | public void getConfigDatas(String systemId,String libray, ApplyBZDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable { |
| | | |
| | | LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>(); |
| | | //如果将数据转换成所需要的数据对象 |
| | | Map<String, String> attrMapConfigMap=new HashMap<>(); |
| | | Map<String, String> propMaps=new HashMap<>(); |
| | | try { |
| | | log.info("开始读取系统配置文件 start"); |
| | | Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap(); |
| | | log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size()); |
| | | //stringStringMap.put("RLM","D:\\RLM.xml"); |
| | | if(!CollectionUtils.isEmpty(stringStringMap)) { |
| | | log.info("info:需要读取配置文件"); |
| | | LibraryDO libraryDO = gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId, stringStringMap); |
| | | List<LibraryClsfDO> libraryClsfDOList = libraryDO.getClsf(); |
| | | if(!CollectionUtils.isEmpty(libraryClsfDOList)) { |
| | | Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2)); |
| | | log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置"); |
| | | String path=stringStringMap.get(systemId); |
| | | if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) { |
| | | log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息"); |
| | | List<ClsfAttrMappingDO> 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{ |
| | | throw new Throwable("根据系统标识【"+systemId+"】找到对应的配置文件:【"+path+"】,但未获取到对应的库【"+libray+"】属性映射信息配置"); |
| | | } |
| | | } |
| | | } |
| | | log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end "); |
| | | }catch (Throwable e){ |
| | | objerrorCode="1"; |
| | | e.printStackTrace(); |
| | | throw new Throwable("MDM集成属性配置文件读取失败"); |
| | | } |
| | | LinkedList<String> rowNameList=new LinkedList<>(); |
| | | LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>(); |
| | | //根据分类模板组织数据 |
| | | final int[] index = {0}; |
| | | try { |
| | | codeClassifyTemplateAttrVOList.stream().forEach(codeClassifyTemplateAttrVO -> { |
| | | String attrName = codeClassifyTemplateAttrVO.getName(); |
| | | String field = codeClassifyTemplateAttrVO.getId(); |
| | | rowNameList.add(attrName); |
| | | filedIndexMap.put(field, index[0]++); |
| | | }); |
| | | dataObjectVO.setColName(rowNameList);//放入属性 |
| | | attrMapConfigMap.putAll(propMaps); |
| | | LinkedList<RowDatas> rowDataList = new LinkedList<>(); |
| | | List<ApplyBZDataVO> applyBZDataVOList=new ArrayList<>(); |
| | | |
| | | if(!CollectionUtils.isEmpty(applyDatasVO.getObject())){ |
| | | applyBZDataVOList=applyDatasVO.getObject(); |
| | | } |
| | | //Map<String, List<ProppertyVO>> 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<ProppertyVO> proppertyVOList = applyDataVO.getProp(); |
| | | |
| | | LinkedHashMap<Integer, String> integerValueMap = new LinkedHashMap<>(); |
| | | Map<String, String> filedValueMap = new HashMap<>(); |
| | | if (!CollectionUtils.isEmpty(proppertyVOList)) { |
| | | Map<String, String> sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey, ProppertyVO::getValue, (key1, key2) -> key2)); |
| | | Map<String, String> keyValueMap = new HashMap<>(); |
| | | //判断attrMapConfigMap是否有值,如果没有则说明基础默认的是编码系统字段 |
| | | if (!CollectionUtils.isEmpty(attrMapConfigMap)) { |
| | | sourceKeyValueMap.keySet().forEach(sourceKey -> { |
| | | String dataValue = sourceKeyValueMap.get(sourceKey); |
| | | if (attrMapConfigMap.containsKey(sourceKey)) { |
| | | String targetKey = attrMapConfigMap.get(sourceKey); |
| | | keyValueMap.put(targetKey, StringUtils.isBlank(dataValue)?"":dataValue); |
| | | } |
| | | }); |
| | | } else { |
| | | sourceKeyValueMap.forEach((filed,value)->{ |
| | | keyValueMap.put(filed,StringUtils.isBlank(value)?"":value) ; |
| | | }); |
| | | } |
| | | |
| | | filedIndexMap.forEach((attrKey, column) -> { |
| | | String keyValue = ""; |
| | | if (keyValueMap.containsKey(attrKey)) { |
| | | keyValue =StringUtils.isBlank(keyValueMap.get(attrKey))?"":keyValueMap.get(attrKey); |
| | | } |
| | | integerValueMap.put(column, keyValue); |
| | | filedValueMap.put(attrKey, keyValue); |
| | | }); |
| | | } |
| | | rowDatas.setData(integerValueMap); |
| | | rowDatas.setFiledValue(filedValueMap); |
| | | rowDataList.add(rowDatas); |
| | | }); |
| | | dataObjectVO.setRowData(rowDataList); |
| | | }catch (Throwable e){ |
| | | objerrorCode="1"; |
| | | throw new Throwable("组织数据映射值失败"); |
| | | } |
| | | } |
| | | |
| | | /*** |
| | | * 根据属性映射转换编码所需字段 |
| | | */ |
| | |
| | | Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2)); |
| | | log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置"); |
| | | String path=stringStringMap.get(systemId); |
| | | if (libPropMaps.containsKey(libray)) { |
| | | if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) { |
| | | log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息"); |
| | | List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray); |
| | | List<ClsfAttrMappingDO> 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{ |
| | |
| | | if(StringUtils.isNotBlank(classOid)){ |
| | | queryWrapper.in(DockingSystemConfig::getClassifyOid,classOid); |
| | | } |
| | | List<DockingSystemConfig> dockingSystemConfigList= dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper); |
| | | List<DockingSystemConfig> dockingSystemConfigList=new ArrayList<>(); |
| | | dockingSystemConfigList= dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper); |
| | | if(!CollectionUtils.isEmpty(dockingSystemConfigList)){ |
| | | return dockingSystemConfigList.get(0); |
| | | }else{ |
| | |
| | | return checkIspass(systemId, type, operationType, codeClassifyVO.getParentCodeClassifyOid()); |
| | | } |
| | | } |
| | | return dockingSystemConfigList.get(0); |
| | | if(dockingSystemConfigList.size()>0){ |
| | | return dockingSystemConfigList.get(0); |
| | | }else{ |
| | | return new DockingSystemConfig(); |
| | | } |
| | | } |
| | | } |