| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.thoughtworks.xstream.XStream; |
| | | import com.thoughtworks.xstream.io.xml.DomDriver; |
| | | import com.vci.ubcs.code.Scheduling.NonWebRequestAttributes; |
| | | import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; |
| | | import com.vci.ubcs.code.constant.MdmDuckingConstant; |
| | | import com.vci.ubcs.code.dto.CodeOrderDTO; |
| | |
| | | import com.vci.ubcs.starter.web.util.WebUtil; |
| | | import com.vci.ubcs.system.user.entity.User; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.map.CaseInsensitiveMap; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.secure.BladeUser; |
| | |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.mock.web.MockHttpServletRequest; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.support.DefaultTransactionStatus; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.LinkedMultiValueMap; |
| | | import org.springframework.util.MultiValueMap; |
| | | import org.springframework.web.context.request.RequestAttributes; |
| | | import org.springframework.web.context.request.RequestContextHolder; |
| | | import org.springframework.web.context.request.ServletRequestAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.jws.WebMethod; |
| | |
| | | |
| | | @Value("${erp.item.systemId:ERP}") |
| | | public String systemId; |
| | | @Value("${erp.item.secName:固定码段}") |
| | | public String secName; |
| | | @Value("${erp.item.secValue:A}") |
| | | public String secValue; |
| | | |
| | | |
| | | /** |
| | | * 业务类型的服务 |
| | |
| | | private MdmIOService mdmIOService; |
| | | @Resource |
| | | private IPasswordFreeLoginService passwordFreeLoginService; |
| | | @Resource |
| | | private WebServiceContext webServiceContext; |
| | | |
| | | @Resource |
| | | private IDockingLogeService dockingLogeService; |
| | | @Resource |
| | |
| | | private MdmSearchItemCodeProvider mdmSearchItemCodeProvider; |
| | | @Autowired |
| | | HttpServletRequest request; |
| | | |
| | | @Override |
| | | public void DockingDataSyncScheduing() { |
| | | |
| | |
| | | }); |
| | | return R.success("手动推送完成,请核对是否推送成功"); |
| | | } |
| | | private SearchItemDataVO initData(String status,String itemCode,String mmCode){ |
| | | SearchItemDataVO searchItemDataVO=new SearchItemDataVO(); |
| | | searchItemDataVO.setLastchangedon(new Date()); |
| | | searchItemDataVO.setLastchangedby("19831133"); |
| | | searchItemDataVO.setCreatby("19831133"); |
| | | searchItemDataVO.setCreatedon(new Date()); |
| | | searchItemDataVO.setIsenabled(status); |
| | | searchItemDataVO.setMaterialcode("XMDH0001"); |
| | | searchItemDataVO.setStatus("1"); |
| | | searchItemDataVO.setProjectcode("3333"); |
| | | searchItemDataVO.setProjectitem(itemCode); |
| | | searchItemDataVO.setMmodelcode(mmCode); |
| | | |
| | | return searchItemDataVO; |
| | | } |
| | | |
| | | public HttpServletRequest getRequest(){ |
| | | HttpServletRequest request =null; |
| | | RequestAttributes requestAttributes = null; |
| | | try{ |
| | | requestAttributes = RequestContextHolder.currentRequestAttributes(); |
| | | }catch (IllegalStateException e){ |
| | | //requestAttributes = new NonWebRequestAttributes(); |
| | | //RequestContextHolder.setRequestAttributes(requestAttributes, true); |
| | | request = new MockHttpServletRequest(); |
| | | RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request),true); |
| | | }finally { |
| | | if (requestAttributes instanceof ServletRequestAttributes) { |
| | | ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes(); |
| | | request = servletRequestAttributes.getRequest(); |
| | | } |
| | | } |
| | | return request; |
| | | } |
| | | /*** |
| | | * 同步型号代号 |
| | | */ |
| | |
| | | searchItemParam.setLastchangedon(lastchangedon); |
| | | searchItemParam.setStatus("1");// |
| | | Map<String,String>searchDataMap= VciBaseUtil.objectToMapString(searchItemParam); |
| | | SearchItemVO searchItemVO= mdmSearchItemCodeProvider.getppModelByElem(searchDataMap); |
| | | //SearchItemVO searchItemVO= mdmSearchItemCodeProvider.getppModelByElem(searchDataMap); |
| | | SearchItemVO searchItemVO=new SearchItemVO(); |
| | | List<SearchItemDataVO> data=new ArrayList<>(); |
| | | SearchItemDataVO searchItemDataVO1=initData("1","","pro-00001"); |
| | | SearchItemDataVO searchItemDataVO2=initData("0","item-00001",""); |
| | | data.add(searchItemDataVO1); |
| | | data.add(searchItemDataVO2); |
| | | searchItemVO.setData(data); |
| | | searchItemVO.setCode("200"); |
| | | searchItemVO.setMsg(""); |
| | | String paramString=""; |
| | | String backString="成功"; |
| | | String msg="成功"; |
| | | boolean success=true; |
| | | if(searchItemVO!=null) { |
| | | paramString = JSONObject.toJSON(searchItemVO).toString(); |
| | | try { |
| | | //免密登录申请token,request中添加用户信息 |
| | | try { |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT), request); |
| | | passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),getRequest()); |
| | | }catch (Throwable e){ |
| | | throw new Throwable("用户鉴权失败."); |
| | | } |
| | |
| | | List<SearchItemDataVO> dataList = searchItemVO.getData(); |
| | | Map<String, SearchItemDataVO> dataVOMap = new HashMap<>(); |
| | | List<String> itemCodeList = new ArrayList<>(); |
| | | ApplyDatasVO allDatasVO = new ApplyDatasVO(); |
| | | List<ApplyDataVO> allObjectList=new ArrayList<>(); |
| | | if (!CollectionUtils.isEmpty(dataList)) { |
| | | dataList.stream().forEach(searchItemDataVO -> { |
| | | String itemCode = StringUtils.isNotBlank(searchItemDataVO.getProjectitem()) ? searchItemDataVO.getProjectitem() : searchItemDataVO.getMmodelcode();//项目代号 |
| | |
| | | itemCodeList.add(itemCode); |
| | | }); |
| | | String tableName = ""; |
| | | R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(btmName); |
| | | R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(codeClassify.getBtmTypeId()); |
| | | if (!r.isSuccess()) { |
| | | throw new Throwable(r.getMsg()); |
| | | } |
| | |
| | | throw new Throwable("根据业务类型未查询到业务类型对象!"); |
| | | } |
| | | tableName = btmTypeVO.getTableName(); |
| | | if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) { |
| | | if (StringUtils.isBlank(tableName)) { |
| | | throw new Throwable("根据业务类型未查询到业务类型相关联的表"); |
| | | } |
| | | StringBuffer sb = new StringBuffer(); |
| | |
| | | sb.append(" where 1=1"); |
| | | sb.append(" and lastr=1 and lastv=1"); |
| | | sb.append(" and codeclsfid = '" + codeClassify.getOid() + "' "); |
| | | sb.append( VciBaseUtil.toInSql(attrKey,VciBaseUtil.array2String(itemCodeList.toArray(new String[]{})))); |
| | | sb.append(" and "+ VciBaseUtil.toInSql(attrKey,itemCodeList.toArray(new String[]{}))); |
| | | List<Map<String, String>> newDataList = commonsMapper.queryByOnlySqlForMap(sb.toString()); |
| | | //List<BaseModel> baseModelList=new ArrayList<>(); |
| | | Map<String,BaseModel> baseModelMap=new HashMap<>(); |
| | | newDataList.stream().forEach(dataMap->{ |
| | | BaseModel baseModel=new BaseModel(); |
| | | DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,baseModel,false,user); |
| | | Map<String,String> newDateMap=new CaseInsensitiveMap<>(dataMap); |
| | | DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(newDateMap,baseModel,true,user); |
| | | DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel,user); |
| | | //baseModelList.add(baseModel); |
| | | String attrKeyValue=dataMap.getOrDefault(attrKey,""); |
| | | |
| | | String attrKeyValue=newDateMap.getOrDefault(attrKey,""); |
| | | baseModelMap.put(attrKeyValue,baseModel); |
| | | }); |
| | | ApplyDatasVO editDatasVO = new ApplyDatasVO(); |
| | | |
| | | List<ApplyDataVO> addObjectList=new ArrayList<>(); |
| | | List<ApplyDataVO> editObjectList=new ArrayList<>(); |
| | | dataVOMap.forEach((key,value)->{ |
| | |
| | | changeObjectToMap(value,"",user,"create",addObjectList); |
| | | } |
| | | }); |
| | | allObjectList.addAll(addObjectList); |
| | | allObjectList.addAll(editObjectList); |
| | | allDatasVO.setObject(allObjectList); |
| | | LinkedList<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new LinkedList<>(); |
| | | if(!CollectionUtils.isEmpty(addObjectList)){ |
| | | //规则的主键需要去获取 |
| | | CodeClassifyFullInfoBO classifyFullInfo = codeClassifyService.getClassifyFullInfo(codeClassify.getOid()); |
| | |
| | | this.getConfigDatas(systemId, btmName, applyDatasVO, attrVOS, dataObjectVO); |
| | | CodeOrderDTO orderDTO = new CodeOrderDTO(); |
| | | orderDTO.setCodeClassifyOid(codeClassify.getOid());//分类主键 |
| | | |
| | | //码段设置 |
| | | List<SectionVO> section=new ArrayList<>(); |
| | | SectionVO sectionVO=new SectionVO(); |
| | | sectionVO.setValue(secValue); |
| | | sectionVO.setName(secName); |
| | | section.add(sectionVO); |
| | | log.info("end:规则获取完毕"); |
| | | List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(null, ruleVO,classifyFullInfo); |
| | | List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(section, ruleVO,classifyFullInfo); |
| | | log.info("end:码段获取完毕"); |
| | | |
| | | orderDTO.setSecDTOList(codeOrderSecDTOList);//分类码段 |
| | | mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs,false); |
| | | allResultDataObjectDetailDOS.addAll(resultDataObjectDetailDOs); |
| | | } |
| | | |
| | | //更新数据(更新状态) |
| | | if(!CollectionUtils.isEmpty(editObjectList)){ |
| | | DataObjectVO dataObjectVO = new DataObjectVO(); |
| | | ApplyDatasVO applyDatasVO = new ApplyDatasVO(); |
| | | applyDatasVO.setObject(editObjectList); |
| | | LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>(); |
| | | CodeClassifyVO codeClassifyVO=new CodeClassifyVO(); |
| | | BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassify, codeClassifyVO); |
| | | this.getConfigDatas(systemId, btmName, applyDatasVO, attrVOS, dataObjectVO); |
| | | mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,false); |
| | | |
| | | allResultDataObjectDetailDOS.addAll(resultDataObjectDetailDOs); |
| | | } |
| | | Object paramObject = JSONObject.toJSON(allDatasVO); |
| | | paramString=Func.isEmpty(paramObject)?"":paramObject.toString(); |
| | | Object backObject = JSONObject.toJSON(allResultDataObjectDetailDOS); |
| | | backString=Func.isEmpty(backObject)?"":backObject.toString(); |
| | | } |
| | | } |
| | | catch (Throwable e){ |
| | | e.printStackTrace();; |
| | | log.error("查询失败--->"+e); |
| | | success=false; |
| | | backString="查询失败--->"+e; |
| | | msg="查询失败--->"+e; |
| | | }finally { |
| | | try { |
| | | //记录日志 |
| | | this.saveLogs(systemId, systemId, paramString, backString, success, msg, "queryData"); |
| | | }catch (Throwable e){ |
| | | e.printStackTrace(); |
| | | log.error(e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /*** |
| | | * 记录日志信息 |
| | | * @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); |
| | | } |
| | | |
| | | /*** |
| | | * 根据传入的参数信息校验码段规则 |
| | | */ |
| | |
| | | //String status= searchItemDataVO.getStatus();//数据状态 字符型,枚举值;制单:0;审批中:1;通过:2;驳回:3; |
| | | |
| | | String mmodelCode=searchItemDataVO.getMmodelcode();//制造型号代号 |
| | | initProperty("mmodelCode","","mmodelCode",propList); |
| | | initProperty("mmodelcode","",mmodelCode,propList); |
| | | String projectCode= searchItemDataVO.getProjectcode();//项目编码 |
| | | initProperty("projectcode","","projectCode",propList); |
| | | initProperty("projectcode","",projectCode,propList); |
| | | String projectItem=searchItemDataVO.getProjectitem();//项目代号 |
| | | initProperty("projectitem","","projectItem",propList); |
| | | initProperty("projectitem","",projectItem,propList); |
| | | String materialCode=searchItemDataVO.getMaterialcode();//产品编码 |
| | | initProperty("materialcode","","materialCode",propList); |
| | | initProperty("materialcode","",materialCode,propList); |
| | | //组合属性的处理 |
| | | initProperty(attrKey,"",StringUtils.isNotBlank(projectItem)?projectItem:mmodelCode,propList); |
| | | String creatBy=searchItemDataVO.getCreatby();//创建者 |
| | | Date cretaeDon= searchItemDataVO.getCreatedon();//创建日期 日期型,如:2023-09-08 19:24:11 |
| | | String lastchangeBy=searchItemDataVO.getLastchangedby();//更改者 |
| | |
| | | String isenabled= searchItemDataVO.getIsenabled();//字符型,枚举值;停用:0;启用:1; |
| | | applyDataVO.setOperate(operation); |
| | | applyDataVO.setCode(code); |
| | | if(isenabled.equals(0)){ |
| | | if(isenabled.equals("0")){ |
| | | applyDataVO.setStatus(CodeDefaultLC.DISABLE.getValue()); |
| | | }else{ |
| | | applyDataVO.setStatus(CodeDefaultLC.RELEASED.getValue()); |