| | |
| | | import com.thoughtworks.xstream.XStream; |
| | | import com.thoughtworks.xstream.io.xml.DomDriver; |
| | | import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; |
| | | import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; |
| | | import com.vci.ubcs.code.constant.MdmDuckingConstant; |
| | | import com.vci.ubcs.code.dto.CodeOrderDTO; |
| | | import com.vci.ubcs.code.dto.CodeOrderSecDTO; |
| | |
| | | import com.vci.ubcs.starter.web.util.BeanUtilForVCI; |
| | | import com.vci.ubcs.starter.web.util.VciBaseUtil; |
| | | import com.vci.ubcs.starter.web.util.WebUtil; |
| | | import com.xkcoding.http.support.Http; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.map.CaseInsensitiveMap; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | |
| | | 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; |
| | |
| | | |
| | | @Value("${erp.item.tenant:10000}") |
| | | private String ERPXHDHTENANT; |
| | | |
| | | |
| | | /** |
| | | * 业务类型的服务 |
| | |
| | | @Autowired(required = false) |
| | | private MdmSearchItemCodeProvider mdmSearchItemCodeProvider; |
| | | |
| | | @Autowired |
| | | HttpServletRequest request; |
| | | @Resource |
| | | private ICodeAllCodeService codeAllCodeService; |
| | | |
| | | @Override |
| | | public void DockingDataSyncScheduing() { |
| | |
| | | } |
| | | org.springblade.core.tool.utils.WebUtil.setRequest(new ServletRequestAttributes(request)); |
| | | } |
| | | |
| | | return request; |
| | | } |
| | | |
| | |
| | | lastchangedon=endDate; |
| | | } |
| | | searchItemParam.setLastchangedon(lastchangedon); |
| | | searchItemParam.setStatus(itemStatus);// |
| | | Map<String,String> searchDataMap = VciBaseUtil.objectToMapString(searchItemParam); |
| | | searchItemParam.setIsenabled(""); |
| | | searchItemParam.setStatus(itemStatus); |
| | | //Map<String,String> searchDataMap = VciBaseUtil.objectToMapString(searchItemParam); |
| | | try { |
| | | paramString=JSONObject.toJSON(searchItemParam).toString(); |
| | | String sendParamString=JSONObject.toJSON(searchItemParam).toString(); |
| | | // TODO: 改为使用HttpUtils方式进行申请,因为现在申请用之前的方式会报错 |
| | | LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); |
| | | headers.add("Authorization",ERPXHDHAUTH); |
| | | headers.add("X-ECC-Current-Tenant",ERPXHDHTENANT); |
| | | headers.add("Accept-Language","zh-CHS"); |
| | | headers.add("Content-Type",MediaType.APPLICATION_JSON.toString()); |
| | | String res = HttpUtils.request(ERPXHDHURL+"/getppModelByElemNew",paramString,headers, HttpMethod.POST,MediaType.APPLICATION_JSON); |
| | | String res = HttpUtils.request(ERPXHDHURL+"/getppModelByElemNew",sendParamString,headers, HttpMethod.POST,MediaType.APPLICATION_JSON); |
| | | // String res= mdmSearchItemCodeProvider.getppModelByElem(searchItemParam); |
| | | SearchItemVO searchItemVO = JSONObject.toJavaObject(JSONObject.parseObject(res), SearchItemVO.class); |
| | | if (searchItemVO != null) { |
| | | if(!"200".equals(searchItemVO.getStatus())){ |
| | | throw new ServiceException(String.format("接口返回状态码为:%s,原因:%s",searchItemVO.getStatus(),searchItemVO.getMessage())); |
| | | } |
| | | BladeUser finalUser; |
| | | paramString = JSONObject.toJSON(searchItemVO).toString(); |
| | | log.info("型号代号数据值-------》"+paramString); |
| | |
| | | /*** |
| | | * 发送编码主数据 |
| | | */ |
| | | private void sendpushDataForService (List<DockingTask> dockingTaskS){ |
| | | private void sendpushDataForService(List<DockingTask> dockingTaskS){ |
| | | //每个task依次执行推送 |
| | | for (DockingTask dockingTask:dockingTaskS){ |
| | | //每个task一个事务,开启 |
| | |
| | | //表示是主数据 |
| | | CodeClassifyTemplateVO codeClassifyTemplateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(classifyoid); |
| | | R<List<Map<String, String>>> r = mdmEngineServiceI.getDataByOid(btmoid, codeClassifyTemplateVO.getOid()); |
| | | |
| | | List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes(); |
| | | Map<String/**英文名称**/, String/**中文名称**/> attrIdNameMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t.getName(), (o1, o2) -> o2)); |
| | | Map<String, String> data = new HashMap<>(); |
| | | if (r == null) { |
| | | JSONObject josni = bladeRedis.get(DOCKING_CACHE2_DELETE + btmoid); |
| | | data = (Map) josni; |
| | | // TODO: 回收编码的情况,会出现数据已经回收,但是事务还未执行的情况, |
| | | // 所以这儿缓存就得按照啥时候回收的推送成功了啥时候才能清空指定的缓存 |
| | | if (!r.isSuccess() || Func.isEmpty(r.getData())) { |
| | | List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getId, dockingTask.getId())); |
| | | CodeAllCode codeAllCode = codeAllCodes.get(0); |
| | | BaseModel baseModel = JSONObject.parseObject(codeAllCode.getBusinessData(), BaseModel.class); |
| | | Map<String, Object> objectMap = VciBaseUtil.objectToMap(baseModel); |
| | | for (Map.Entry<String,Object> entry : objectMap.entrySet()){ |
| | | if(entry.getKey().equals("data") && Func.isNotEmpty(entry.getValue())){ |
| | | Map<String, Object> dataMap = ((JSONObject) entry.getValue()); |
| | | for(Map.Entry<String,Object> dataEntry : dataMap.entrySet()){ |
| | | String v = String.valueOf(dataEntry.getValue()); |
| | | data.put(dataEntry.getKey().toLowerCase(Locale.ROOT), v == null ? "" : v); |
| | | } |
| | | }else{ |
| | | String key = entry.getKey().toLowerCase(Locale.ROOT); |
| | | String value = String.valueOf(entry.getValue()); |
| | | data.put(key, value == null ? "":value); |
| | | } |
| | | } |
| | | /*JSONObject josni = bladeRedis.get(DOCKING_CACHE2_DELETE + btmoid); |
| | | data = (Map) josni;*/ |
| | | } else { |
| | | data = r.getData().get(0); |
| | | } |
| | |
| | | } |
| | | if(isGroupCodeFlage){ |
| | | code=data.getOrDefault("groupcode",""); |
| | | if(StringUtils.isBlank(code)) {//如果是集团码,没有领取到集团码则任务不结束等待集团码申请后再通过定时器调用集团码段 |
| | | if(StringUtils.isBlank(code)) { |
| | | //如果是推送集团码,没有领取到集团码则任务不结束等待集团码申请后再通过定时器调用集团码段 |
| | | dockingTask.setDescription("等待集团申请集团码"); |
| | | // TODO:可能会出现未获取到集团码,就被点了回收,这时候 |
| | | dockingTask.setSendFlag(MdmDuckingConstant.SEND_FLAG_FALSE); |
| | | dockingTask.setLastModifyTime(new Date()); |
| | | dockingTaskService.updateById(dockingTask); |
| | |
| | | /*** |
| | | * 查询需要集成的业务数据任务 |
| | | */ |
| | | private void sendpushDataForService (){ |
| | | private void sendpushDataForService(){ |
| | | initSysadmin(); |
| | | //查询哪些任务还没有执行完成 |
| | | //VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class); |
| | |
| | | */ |
| | | private void sendpushClsfForService(){ |
| | | initSysadmin(); |
| | | /* //查询哪些任务还没有执行完成 |
| | | /* //查询哪些任务还没有执行完成 |
| | | VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class); |
| | | queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE); |
| | | queryWrapper.addQueryMap("btmId",DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)); |
| | | List<DockingTaskDO> dockingTaskDOS = dockingTaskDaoI.selectByWrapper(queryWrapper);*/ |
| | | |
| | | //根据类型去查询需要集成的分类或者数据 |
| | | LambdaQueryWrapper<DockingTask> queryWrapper = Wrappers.<DockingTask>lambdaQuery(); |
| | | queryWrapper.eq(DockingTask::getSendFlag,MdmDuckingConstant.SEND_FLAG_FALSE); |