| | |
| | | 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.ApplyBZParamVO; |
| | | import com.vci.ubcs.code.vo.webserviceModel.applybz.ApplyBZVO; |
| | | 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.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.code.wrapper.CodeClassifyWrapper; |
| | | import com.vci.ubcs.omd.feign.IBtmTypeClient; |
| | | import com.vci.ubcs.omd.vo.BtmTypeVO; |
| | |
| | | import com.vci.ubcs.system.vo.DeptVO; |
| | | import com.vci.ubcs.system.vo.RoleVO; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.tools.ant.taskdefs.condition.Http; |
| | | 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.ServletRequest; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.ws.rs.core.Context; |
| | | 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; |
| | | import java.util.concurrent.atomic.AtomicReference; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST; |
| | |
| | | @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()); |
| | | AuthUtil.getUser(); |
| | | List<ClassfyVO> classVOList = classfysVO.getClassify(); |
| | | InterParameterVO finalInterParameterVO = interParameterVO; |
| | | |
| | | //这是账号信息 |
| | | SessionInfo sessionInfo = new SessionInfo(); |
| | | sessionInfo.setUserId(userVo.getUserName()); |
| | |
| | | String operation=""; |
| | | if(CODE_CHECKCONFIG) { |
| | | //校验是否配置 |
| | | DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid()); |
| | | 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()+"接口配置已停用或者未配置,请联系编码管理员!"); |
| | |
| | | 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<ResultMdMapping> resultMdMappingList=new ArrayList<>(); |
| | | String message=""; |
| | | if(isUsedFlag){ |
| | | AtomicBoolean success= new AtomicBoolean(true); |
| | | List<PersonMasterData> masterDataList=new ArrayList<>(); |
| | | List<String> fields= VciBaseUtil.str2List(personAndDeptConfig.getPersonFields()); |
| | | try { |
| | | if(personData==null){ |
| | | throw new Throwable("传入参数为null"); |
| | | } |
| | | 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<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ).collect(Collectors.toList()); |
| | | |
| | | List<PersonMasterData> personMasterDataList= personData.getMasterData(); |
| | | List<Map> dataList=new ArrayList<>(); |
| | | |
| | | List<String> codeList=new ArrayList<>(); |
| | | |
| | | List<ApplyDataVO> applyDataVOList=new ArrayList<>(); |
| | | List<ApplyDataVO> 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<String,String> dataMap= VciBaseUtil.objectToMapString(personMasterData); |
| | | List<ProppertyVO> 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(personMasterData.getLm_code()); |
| | | }); |
| | | |
| | | R<BtmTypeVO> 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<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString()); |
| | | List<ClientBusinessObject> cboList= ChangeMapTOClientBusinessObjects(dataMapList); |
| | | ApplyDatasVO applyDatasVO=new ApplyDatasVO(); |
| | | ApplyDatasVO editDatasVO=new ApplyDatasVO(); |
| | | if(!CollectionUtils.isEmpty(cboList)){ |
| | | Map<String,ClientBusinessObject> 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<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> { |
| | | String code =cbo.getCode(); |
| | | return !oldpplyDataVOMap.containsKey(code); |
| | | }).collect(Collectors.toList()); |
| | | applyDatasVO.setObject(applyApplyDataVOList); |
| | | //数据库存在的 |
| | | List<ApplyDataVO> 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<XMLResultDataObjectDetailDO> 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,personApplyGroupCode); |
| | | 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<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>(); |
| | | dataObjectVO.getRowData().parallelStream().forEach(rowData->{ |
| | | String mesg=""; |
| | | try { |
| | | CodeOrderDTO orderDTO = new CodeOrderDTO(); |
| | | List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>(); |
| | | orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键 |
| | | orderDTO.setTemplateOid(templateVO.getOid()); |
| | | 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.addSaveCode(orderDTO); |
| | | 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<Map<String, String>> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString()); |
| | | if (!CollectionUtils.isEmpty(newDataMapList)) { |
| | | String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID"); |
| | | List<String> oidList = new ArrayList<>(); |
| | | oidList.add(oid); |
| | | //如果有申请就去调用申请集团码 |
| | | if (isPersonApplyGroupCode) { |
| | | mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue()); |
| | | success.set(true); |
| | | mesg = "数据保存成功,等待申请集团码"; |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | mesg=e.getMessage(); |
| | | e.printStackTrace(); |
| | | }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; |
| | | 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(); |
| | | //组织返回结果 |
| | | 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){ |
| | | 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.isPersonApplyGroupCode(); |
| | | List<ResultMdMapping> resultMdMappingList=new ArrayList<>(); |
| | | AtomicBoolean success= new AtomicBoolean(true); |
| | | String message=""; |
| | | String systemCode=""; |
| | | if(isUsedFlag){ |
| | | List<OrgMasterData> orgMasterDataList=new ArrayList<>(); |
| | | List<String> fields= VciBaseUtil.str2List(personAndDeptConfig.getPersonFields()); |
| | | try { |
| | | if(orgData==null){ |
| | | throw new Throwable("传入参数为null"); |
| | | } |
| | | systemCode=orgData.getSystemCode(); |
| | | orgMasterDataList = orgData.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<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) |
| | | ).collect(Collectors.toList()); |
| | | List<Map> dataList=new ArrayList<>(); |
| | | List<String> codeList=new ArrayList<>(); |
| | | List<ApplyDataVO> applyDataVOList=new ArrayList<>(); |
| | | List<ApplyDataVO> deleteDataVOList=new ArrayList<>(); |
| | | orgMasterDataList.stream().forEach(orgMasterData -> { |
| | | ApplyDataVO object=new ApplyDataVO(); |
| | | object.setCode(orgMasterData.getMdm_code());//编码 |
| | | object.setCreator(orgMasterData.getCreator());//创建者 |
| | | object.setEditor(orgMasterData.getModifier());//修改者 |
| | | object.setId(orgMasterData.getPk_mdm());//主键 |
| | | object.setStatus(CodeDefaultLC.RELEASED.getValue());//状态则需要判断 |
| | | Map<String,String> dataMap= VciBaseUtil.objectToMapString(orgMasterData); |
| | | List<ProppertyVO> 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(orgMasterData.getMdm_code()); |
| | | }); |
| | | |
| | | R<BtmTypeVO> 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<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString()); |
| | | List<ClientBusinessObject> cboList= ChangeMapTOClientBusinessObjects(dataMapList); |
| | | ApplyDatasVO applyDatasVO=new ApplyDatasVO(); |
| | | ApplyDatasVO editDatasVO=new ApplyDatasVO(); |
| | | if(!CollectionUtils.isEmpty(cboList)){ |
| | | Map<String,ClientBusinessObject> 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<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> { |
| | | String code =cbo.getCode(); |
| | | return !oldpplyDataVOMap.containsKey(code); |
| | | }).collect(Collectors.toList()); |
| | | applyDatasVO.setObject(applyApplyDataVOList); |
| | | //数据库存在的 |
| | | List<ApplyDataVO> 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<XMLResultDataObjectDetailDO> 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,personApplyGroupCode); |
| | | 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<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>(); |
| | | dataObjectVO.getRowData().parallelStream().forEach(rowData->{ |
| | | String mesg=""; |
| | | try { |
| | | CodeOrderDTO orderDTO = new CodeOrderDTO(); |
| | | List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>(); |
| | | orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键 |
| | | orderDTO.setTemplateOid(templateVO.getOid()); |
| | | 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.addSaveCode(orderDTO); |
| | | 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<Map<String, String>> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString()); |
| | | if (!CollectionUtils.isEmpty(newDataMapList)) { |
| | | String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID"); |
| | | List<String> oidList = new ArrayList<>(); |
| | | oidList.add(oid); |
| | | //如果有申请就去调用申请集团码 |
| | | if (isPersonApplyGroupCode) { |
| | | mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue()); |
| | | success.set(true); |
| | | mesg = "数据保存成功,等待申请集团码"; |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | mesg=e.getMessage(); |
| | | e.getMessage(); |
| | | e.printStackTrace(); |
| | | }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; |
| | | 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(); |
| | | //组织返回结果 |
| | | 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){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | return resultOrgData; |
| | | } |
| | | |
| | | /*** |
| | | * 统一更新接口(更改状态,更改属性信息)接口 |
| | |
| | | ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); |
| | | systemId = interParameterVO.getData().getSystemId(); |
| | | UserVO userVo = interParameterVO.getData().getUser(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | List<ClassfyVO> classVOList = classfysVO.getClassify(); |
| | | InterParameterVO finalInterParameterVO = interParameterVO; |
| | | //这是账号信息 |
| | |
| | | throw new Throwable ("根据传输的分类,未获取到分类信息"); |
| | | } |
| | | log.info("end:分类查询完毕"); |
| | | |
| | | String operation=""; |
| | | if(CODE_CHECKCONFIG) { |
| | | //校验是否配置 |
| | |
| | | mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,isCodeOrGroupCode); |
| | | log.info("end:修改数据执行完毕"); |
| | | } catch (Throwable e) { |
| | | XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO(); |
| | | xmlResultDataObjectDetailDO.setCode(""); |
| | | xmlResultDataObjectDetailDO.setId(""); |
| | | xmlResultDataObjectDetailDO.setErrorid(objerrorCode); |
| | | xmlResultDataObjectDetailDO.setMsg("编码更改/状态更改/删除:"+e.getMessage()); |
| | | resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); |
| | | List<ApplyDataVO> 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(); |
| | |
| | | log.info("查询分类的数据类型:->"+dataType); |
| | | ResultClassifyVO resultClassifyVO =new ResultClassifyVO(); |
| | | List<ClassifyVO> classifyVOList=new ArrayList<>(); |
| | | ResultData resultData=new ResultData(); |
| | | com.vci.ubcs.code.vo.webserviceModel.classify.ResultData resultData=new com.vci.ubcs.code.vo.webserviceModel.classify.ResultData(); |
| | | try { |
| | | if (StringUtils.isBlank(data)) { |
| | | errorid = "101"; |
| | |
| | | } |
| | | QueryData queryData=queryClassifyVO.getData(); |
| | | UserVO userVo=queryData.getUser(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | systemId=queryData.getSystemId(); |
| | | QueryLibraryVO libraryVO= queryData.getLibrary(); |
| | | String libId= libraryVO.getId(); |
| | |
| | | CondtionsVO condtionsVO=dataCondtionsVO.getCondtions(); |
| | | systemId=condtionsVO.getSystemId(); |
| | | UserVO userVo=condtionsVO.getUser(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | CondtionVO condtionVO= condtionsVO.getCondtion(); |
| | | SessionInfo sessionInfo = new SessionInfo(); |
| | | sessionInfo.setUserId(userVo.getUserName()); |
| | |
| | | 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<CodeClassify> libIdDos =classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId,library)); |
| | | if(!CollectionUtils.isEmpty(libIdDos)){ |
| | | CodeClassify libCodeClassify=libIdDos.get(0); |
| | |
| | | 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){ |
| | | errorid ="101"; |
| | | throw new Throwable("系统标识为【"+ systemId +"】,集成分类为【"+currentCodeClassify[0].getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText()+"接口配置已停用或者未配置,请联系编码管理员!"); |
| | | } |
| | | isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false; |
| | | } |
| | | List<CodeClassifyVO> dataCodeClassifyVOList =new ArrayList<>(); |
| | | String oid= currentCodeClassify[0].getOid(); |
| | | TreeQueryObject treeQueryObject=new TreeQueryObject(); |
| | |
| | | statusList.add(CodeDefaultLC.RELEASED.getValue()); |
| | | statusList.add(CodeDefaultLC.DISABLE.getValue()); |
| | | statusList.add(CodeDefaultLC.TASK_BACK.getValue()); |
| | | R<BtmTypeVO> r= btmTypeClient.getDetail(libCodeClassify.getBtmTypeId()); |
| | | BtmTypeVO btmTypeVO =r.getData(); |
| | | String tableName=btmTypeVO.getTableName(); |
| | | |
| | | String tableName=""; |
| | | R<BtmTypeVO> 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"); |
| | | propertyVOS.stream().forEach(propertyVO -> { |
| | | sb.append( " and "+propertyVO.getFiledName()+"='"+propertyVO.getFiledValue()+"'"); |
| | | }); |
| | | 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<Map<String,String>> newDataList= commonsMapper.queryByOnlySqlForMap(sb.toString()); |
| | | List<ClientBusinessObject>clientBusinessObjects=new ArrayList<>(); |
| | | newDataList.stream().forEach(stringStringMap -> { |
| | | ClientBusinessObject clientBusinessObject=new ClientBusinessObject(); |
| | | DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,clientBusinessObject); |
| | | clientBusinessObjects.add(clientBusinessObject); |
| | | }); |
| | | |
| | | List<ClientBusinessObject> clientBusinessObjects= ChangeMapTOClientBusinessObjects(newDataList); |
| | | List<com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO> dataObjectVOS=new ArrayList<>(); |
| | | if(!CollectionUtils.isEmpty(clientBusinessObjects)){ |
| | | CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(currentCodeClassify[0].getOid()); |
| | | Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t)); |
| | | |
| | | Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().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(); |
| | | dataObjectVO.setCode(cbo.getId()); |
| | | 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)){ |
| | |
| | | String [] newQueryFileds=queryFileds.split(","); |
| | | List<PropertyVO> propertyVOList=new ArrayList<>(); |
| | | for(String filed:newQueryFileds){ |
| | | String value=cbo.getAttributeValue(filed); |
| | | if(filedAttributeMap.containsKey(filed)){ |
| | | CodeClassifyTemplateAttrVO attrVO= filedAttributeMap.get(filed); |
| | | 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); |
| | |
| | | resultStr = object.toString(); |
| | | } |
| | | try { //记录日志 |
| | | this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify"); |
| | | this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryData"); |
| | | }catch (Throwable e){ |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | 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(); |
| | | //免密登录申请token,request中添加用户信息 |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); |
| | | systemId=queryData.getSystemId(); |
| | | QueryLibraryVO libraryVO= queryData.getLibrary(); |
| | | String libId= libraryVO.getId(); |
| | |
| | | } |
| | | log.info(libId); |
| | | }else if(secType.equals("codelevelsec")) {//层级码段 |
| | | int level = codeBasicSecVO.getCodeLevelValue(); |
| | | CodeClassifyVO levelCodeClassifyVO = new CodeClassifyVO(); |
| | | CodeClassifyFullInfoBO classifyFullInfoBO = this.classifyService.getClassifyFullInfo(codeClassifyDO.getOid()); |
| | | if(codeBasicSecVO.getCodeLevelType().equals("code_level_special")){//指定层级 |
| | | int level = codeBasicSecVO.getCodeLevelValue(); |
| | | List<CodeClassifyVO> 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); |
| | |
| | | } |
| | | try { |
| | | //记录日志 |
| | | this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify"); |
| | | this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassifyRule"); |
| | | }catch (Throwable e){ |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | return resultStr; |
| | | } |
| | | |
| | | 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{ |
| | | // try { |
| | | // if(StringUtils.isBlank(data)) { |
| | | // errorid[0] ="101"; |
| | | // throw new Throwable("接口参数:传递为空"); |
| | | // } |
| | | // 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("接口参数:传入数据参数解析失败"); |
| | | // } |
| | | // ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); |
| | | // systemId = interParameterVO.getData().getSystemId(); |
| | | // UserVO userVo = interParameterVO.getData().getUser(); |
| | | // //免密登录申请token,request中添加用户信息 |
| | | // passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest()); |
| | | // AuthUtil.getUser(); |
| | | // List<ClassfyVO> classVOList = classfysVO.getClassify(); |
| | | // InterParameterVO finalInterParameterVO = interParameterVO; |
| | | // //这是账号信息 |
| | | // SessionInfo sessionInfo = new SessionInfo(); |
| | | // sessionInfo.setUserId(userVo.getUserName()); |
| | | // sessionInfo.setUserName(userVo.getTrueName()); |
| | | // sessionInfo.setIp(userVo.getIp()); |
| | | // VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); |
| | | //// List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>(); |
| | | // String finalSystemId = systemId; |
| | | // } catch (Throwable e) { |
| | | // List<ApplyDataVO> 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); |
| | | // } |
| | | // 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(); |
| | | // /* 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("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 |
| | |
| | | } |
| | | |
| | | private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){ |
| | | List<ClientBusinessObject> clientBusinessObjectList=new CopyOnWriteArrayList<>(); |
| | | oldDataMap.parallelStream().forEach(dataMap->{ |
| | | List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>(); |
| | | oldDataMap.stream().forEach(dataMap->{ |
| | | ClientBusinessObject clientBusinessObject=new ClientBusinessObject(); |
| | | DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject); |
| | | dataMap.forEach((key,value)->{ |
| | | clientBusinessObject.setAttributeValue(key,value); |
| | | }); |
| | | 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; |
| | | } |
| | |
| | | dockingLoge.setParamString(parmaData);//参数信息 |
| | | dockingLoge.setReturnString(result);//返回信息 |
| | | dockingLoge.setType(operation);//日志操作类型 |
| | | dockingLoge.setCreateTime(new Date()); |
| | | if(isSucess) { |
| | | dockingLoge.setInterfaceStatus("true");//接口集成状态 |
| | | }else{ |
| | |
| | | * @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; |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | private DockingSystemConfig checkIspass(String systemId,String type,String operationType,String classOid){ |
| | | DockingSystemConfig dockingSystemConfig=new DockingSystemConfig(); |
| | | log.info("systemId:"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)+",classOid:"+classOid); |
| | | CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid); |
| | | classOid=codeClassifyVO.getOid(); |
| | | //根据类型去查询需要集成的分类或者数据 |
| | |
| | | queryWrapper.eq(DockingSystemConfig::getDataFlowType,type); |
| | | queryWrapper.eq(DockingSystemConfig::getPushType,operationType); |
| | | if(StringUtils.isNotBlank(classOid)){ |
| | | queryWrapper.in(DockingSystemConfig::getClassifyId,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)){ |
| | | dockingSystemConfig=dockingSystemConfigList.get(0); |
| | | return dockingSystemConfigList.get(0); |
| | | }else{ |
| | | if(StringUtils.isNotBlank(codeClassifyVO.getParentCodeClassifyOid())) { |
| | | checkIspass(systemId, type, operationType, codeClassifyVO.getOid()); |
| | | return checkIspass(systemId, type, operationType, codeClassifyVO.getParentCodeClassifyOid()); |
| | | } |
| | | } |
| | | return dockingSystemConfig; |
| | | if(dockingSystemConfigList.size()>0){ |
| | | return dockingSystemConfigList.get(0); |
| | | }else{ |
| | | return new DockingSystemConfig(); |
| | | } |
| | | } |
| | | } |