当前位置: 首页 > news >正文

网站开发的母的目的和意义.百度快速收录办法

网站开发的母的目的和意义.,百度快速收录办法,免费做计算机题的网站,成考过来人的忠告1、定时任务处理 2、提供了接口 小鹏方面提供的推送的数据表结构#xff1a; 这几个表总数为100多万#xff0c;经过条件筛选过滤后大概2万多条数据 小鹏的人给的示例图#xff1a; 界面#xff1a; SQL: -- 查询车型 select bmm.md_material_id, bmm.material_num, bm…1、定时任务处理 2、提供了接口 小鹏方面提供的推送的数据表结构 这几个表总数为100多万经过条件筛选过滤后大概2万多条数据 小鹏的人给的示例图 界面 SQL: -- 查询车型 select bmm.md_material_id, bmm.material_num, bmm.material_name, bmm.material_name_en from bm_md_material bmm where bmm.md_material_id in(SELECT bpa.master_part_idfrom (SELECT bpa.master_part_id, bpa.sub_part_id FROM bm_part_assembly bpa WHERE bpa.bom_type PART) aINNER JOIN bm_part_assembly bpa on bpa.sub_part_id a.master_part_id AND bpa.bom_type EBOM);# 根据车型材料idmd_material_id总成主数据 select bpa.bm_part_assembly_id as bmPartAssemblyId, bpa.master_part_id as master_part_id, bpa.sub_part_id as sub_part_id, bpa.update_date as update_date, bpa.quantity as useNumber, bpa.weight_tag as weight, bpa.dev_type as developStatus, bpa.employee_id as bomResponsibleEngineer, bpa.suggest_sourcing as procurementType, bpa.bom_type, bpa.change_id, bpae.importance_level severity, bpae.torque as tighteningTorque, bpae.note as connectionsCodeZhDescribe, bpae.vehicleproject as inheritedRemodeledModels, bmm.material_num from bm_part_assembly bpaleft join bm_part_assembly_ext bpae on bpae.bm_part_assembly_ext_id bpa.part_assembly_ext_idinner join bm_md_material bmm on bmm.md_material_id bpa.sub_part_id where (bpa.bom_type EBOM or bpa.bom_type PART)and is_latest 1 -- 最新版本and active_status current -- 生效状态and bpa.update_date 2024-07-01 # and bpa.master_part_id 98535 -- 车型 md_material_id 23821, 根据 sub_part_id 4010809DF1-00-03 64332 车型的 23821and bpa.master_part_id 23821 -- 车型 md_material_id 23821, 根据 sub_part_id 4010809DF1-00-03 64332 车型的 23821 # and bpa.master_part_id 98532 -- 车型 md_material_id 23821, 根据 sub_part_id 4010809DF1-00-03 64332 车型的 23821 # and bpa.master_part_id 193598 -- 车型 md_material_id 23821, 根据 sub_part_id 4010809DF1-00-03 64332 车型的 23821and bpa.master_part_id 64332 -- 车型 md_material_id 23821, 根据 sub_part_id 4010809DF1-00-03 64332 车型的 23821 如根据子件id64332查询递归去查询直到无下级 # and bpa.sub_part_id like 64332and material_num 4010809DF1-00-03 ; Mapper和Mapper.xml !-- 总成主数据 --select idsyncDataByPage resultTypecom.ruiyada.whole.domain.vo.BomAssemblyVoselectbpa.bm_part_assembly_id as syncPartAssemblyId,bpa.master_part_id as masterPartId, -- 父件id父物料idbpa.sub_part_id as subPartId, -- 子件id子物料idbpa.update_date as lastSyncUpdateDate, -- 同步版本号bpa.quantity as useNumber, -- 用量bpa.weight_tag as weight, -- 重量bpa.dev_type as developStatus, -- 开发状态bpa.employee_id as employeeId, -- 员工id 根据这个员工id去员工表查询 责任工程师bpa.suggest_sourcing as procurementType, -- 采购类型bpa.bom_type as bomType,bpa.change_id as changeId,bpae.importance_level as severity, -- 重要度bpae.torque as tighteningTorque, -- 紧固力矩bpae.note as connectionsCodeZhDescribe, -- 连接点代码中文描述bpae.vehicleproject as inheritedRemodeledModelsfrom bm_part_assembly bpaleft join bm_part_assembly_ext bpae on bpae.bm_part_assembly_ext_id bpa.part_assembly_ext_idinner join bm_md_material bmm on bmm.md_material_id bpa.sub_part_idwhere (bpa.bom_type EBOM or bpa.bom_type PART)and is_latest 1 -- 最新版本and active_status currentif testlastSyncUpdateDate! and lastSyncUpdateDate!nulland bpa.update_date gt; #{lastSyncUpdateDate}/ifif testmasterPartId! and masterPartId!nulland bpa.master_part_id #{masterPartId}/ifORDER BY bpa.update_date DESCLIMIT #{start}, #{pageSize}/select!-- 车型数据 --select idselectCarData resultTypecom.ruiyada.whole.domain.vo.BomAssemblyVoselect bmm.md_material_id as materielId,bmm.material_num as materielCode,bmm.material_name as materielCnName,bmm.material_name_en as materielEnNamefrom bm_md_material bmmwhere bmm.md_material_id in (SELECT bpa.master_part_id from(SELECT bpa.master_part_id, bpa.sub_part_id FROM bm_part_assembly bpaWHERE bpa.bom_type PART) aINNER JOIN bm_part_assembly bpa on bpa.sub_part_id a.master_part_id AND bpa.bom_type EBOM)/select!-- BOM责任工程师 --select idbomResponsibleEngineer resultTypecom.ruiyada.whole.domain.vo.BomAssemblyVoselect bau.user_id userId,bau.user_name userName,bau.organization_id organizationIdfrom bm_acct_user bau where user_id #{employeeId};/select!-- 责任部门 --select idbomResponsibleDepartment resultTypecom.ruiyada.whole.domain.vo.BomAssemblyVoselectbao.id as orgId, bao.org_name as bomResponsibleDepartment, bao.org_name_en as orgNameEnfrom bm_acct_organization baowhere id #{organizationId}/select!--生效ECN编号--select idselectEcnNumberEffect resultTypestringselect bmc.change_code AS ecnNumberEffectfrom bm_md_change bmc where md_change_id #{changeId}/select!-- 查询已同步的最新的一条版本号 --select idselectLastSyncUpdateDate resultTypejava.time.LocalDateTimeselect DATE_FORMAT(last_sync_update_time, %Y-%m-%d) as last_sync_update_time from bom_assembly_material_parts order by last_sync_update_time desc limit 1;/select!-- 根据物料id查询总成下级 --select idselectByMaterialId resultTypecom.ruiyada.whole.domain.vo.BomAssemblyVoselect bmm.md_material_id as materielId,bmm.material_name as materielCnName,bmm.material_name_en as materielEnName,bmm.material_num as materielCodefrom bm_md_material bmmwhere md_material_id inforeach itemitem indexindex collectionmaterialIds open( separator, close)#{item}/foreach/select!-- 统计车型下的总成总数 --select idassentlyCount resultTypejava.lang.Integerselectcount(1)from bm_part_assembly bpaleft join bm_part_assembly_ext bpae on bpae.bm_part_assembly_ext_id bpa.part_assembly_ext_idinner join bm_md_material bmm on bmm.md_material_id bpa.sub_part_idwhere (bpa.bom_type EBOM or bpa.bom_type PART)and is_latest 1 -- 最新版本and active_status current -- 生效状态and bpa.master_part_id #{masterPartId}/select Mapper public interface BomAssemblyMaterialPartsMapper extends BaseMapperBomAssemblyMaterialParts {ListBomAssembyMaterialPartsVO ListById(Param(bom_id) String bomId);/*** 查询已同步的最新的一条版本号*/LocalDateTime selectLastSyncUpdateDate();/*** 分页查询总成主数据* param start* param pageSize* param lastSyncUpdateDate* return*/ListBomAssemblyVo syncDataByPage(Param(start) int start, Param(pageSize) int pageSize,Param(lastSyncUpdateDate) String lastSyncUpdateDate,Param(masterPartId) String masterPartId);/*** 车型数据* return*/ListBomAssemblyVo selectCarData();/*** BOM责任工程师* return*/BomAssemblyVo bomResponsibleEngineer(Param(employeeId) String employeeId);/*** 责任部门* return*/BomAssemblyVo bomResponsibleDepartment(Param(organizationId) String organizationId);/*** 生效ECN编号* return*/String selectEcnNumberEffect(Param(changeId) String changeId);/*** 根据物料id查询总成下级数据* param materialIds* return*/ListBomAssemblyVo selectByMaterialId(Param(materialIds) ListString materialIds);/*** 统计车型下的总成总数* param masterPartId* return*/Integer assentlyCount(Param(masterPartId) String masterPartId);}/*** p* BOM总成材料零件表 服务实现类* /p** author 袁腾飞* since 2024-10-14*/ Slf4j Service public class BomAssemblyMaterialPartsServiceImpl extends ServiceImplBomAssemblyMaterialPartsMapper, BomAssemblyMaterialParts implements BomAssemblyMaterialPartsService {Autowiredprivate BomAssemblyMaterialPartsMapper bomAssemblyMaterialPartsMapper;Autowiredprivate BomCategoryService bomCategoryService; Overridepublic ListBomAssemblyMaterialParts syncDataByPage(int pageSize) {// 获取上一次同步数据的更新时间LocalDateTime lastSyncUpdateDate selectLastSyncUpdateDate();String formatLastSyncUpdateDate lastSyncUpdateDatenull ? : lastSyncUpdateDate.format(DateTimeFormatter.ofPattern(yyyy-MM-dd));// 组装数据ListBomAssemblyDto bomAssemblyDtos assemblingData(pageSize, formatLastSyncUpdateDate);// 把组装后的数据转换为BomAssemblyMaterialParts对象// bomAssemblyDtos在里面取出每个字段// bomAssemblyDtos的父级给BomAssemblyMaterialParts对象父级设置parentId为0id自动生成里层的children的parentId为外层的id// 父级的parentId设为0ListBomAssemblyMaterialParts partsList convertToBomAssemblyMaterialParts(bomAssemblyDtos, 0);// partsList里面的children取出与父节点一起保存if (!partsList.isEmpty()) {bomAssemblyMaterialPartSaveBatch(partsList);}return partsList;}private void bomAssemblyMaterialPartSaveBatch(ListBomAssemblyMaterialParts partsList) {// 收集所有需要保存的节点ListBomAssemblyMaterialParts allNodes collectAllNodes(partsList);// 批量插入所有节点// 判断allNodes里面的syncPartAssemblyId是否在数据库中存在如果不存在则插入如果存在则更新// ListString list allNodes.stream().map(BomAssemblyMaterialParts::getSyncPartAssemblyId).collect(Collectors.toList());allNodes.stream().map(item - item).forEach(item - {// 判断item是否在数据库中存在LambdaQueryWrapperBomAssemblyMaterialParts queryWrapper new LambdaQueryWrapper();queryWrapper.eq(BomAssemblyMaterialParts::getSyncPartAssemblyId, item.getSyncPartAssemblyId());BomAssemblyMaterialParts bomAssemblyMaterialParts bomAssemblyMaterialPartsMapper.selectOne(queryWrapper);if (bomAssemblyMaterialParts null) {// 不存在则插入bomAssemblyMaterialPartsMapper.insert(item);} else {// 存在则更新bomAssemblyMaterialPartsMapper.update(item, queryWrapper);}});// bomAssemblyMaterialPartsMapper.insertOrUpdate(allNodes);}private ListBomAssemblyMaterialParts collectAllNodes(ListBomAssemblyMaterialParts nodes) {ListBomAssemblyMaterialParts allNodes new ArrayList();for (BomAssemblyMaterialParts node : nodes) {allNodes.add(node);if (node.getChildren() ! null !node.getChildren().isEmpty()) {allNodes.addAll(collectAllNodes(node.getChildren()));}}return allNodes;}private ListBomAssemblyDto convertToBomAssemblyDtos(ListBomAssemblyVo bomAssemblyVos, String ecnNumberEffect) {if (bomAssemblyVos null || bomAssemblyVos.isEmpty()) {return Collections.emptyList();}return bomAssemblyVos.stream().map(vo - {BomAssemblyDto dto new BomAssemblyDto();BeanUtils.copyProperties(vo, dto);dto.setChildren(convertToBomAssemblyDtos(vo.getChildren(), ecnNumberEffect));return dto;}).collect(Collectors.toList());}private ListBomAssemblyMaterialParts convertToBomAssemblyMaterialParts(ListBomAssemblyDto dtos, String parentId) {ListBomAssemblyMaterialParts collect dtos.stream().map(dto - {String id ;// 判断item是否在数据库中存在LambdaQueryWrapperBomAssemblyMaterialParts queryWrapper new LambdaQueryWrapper();queryWrapper.eq(BomAssemblyMaterialParts::getSyncPartAssemblyId, dto.getSyncPartAssemblyId());BomAssemblyMaterialParts bomAssemblyMaterialParts bomAssemblyMaterialPartsMapper.selectOne(queryWrapper);if (bomAssemblyMaterialParts null) {// 不存在则就生成idid IdUtil.simpleUUID();} else {// 存在id 和 parentId 保持不变id bomAssemblyMaterialParts.getId();}BomAssemblyMaterialParts parts new BomAssemblyMaterialParts();String bomCategoryId dto.getBomCategoryId();BeanUtils.copyProperties(dto, parts);parts.setId(id);parts.setParentId(parentId);parts.setBomId(bomCategoryId);ListBomAssemblyDto children dto.getChildren();if (!children.isEmpty()) {ListBomAssemblyMaterialParts partsList convertToBomAssemblyMaterialParts(dto.getChildren(), parts.getId());// 这里的partList里面的数据bomId没有给赋值需要给bomId赋值bomCategoryId// parts.setBomId(bomCategoryId);partsList.forEach(part - part.setBomId(bomCategoryId));parts.setChildren(partsList);}parts.setLastSyncUpdateTime(dto.getLastSyncUpdateDate());parts.setCreateTime(LocalDateTime.now());parts.setUpdateTime(LocalDateTime.now());return parts;}).collect(Collectors.toList());return collect;}/*** 组装数据** param pageSize 每页大小* param lastSyncVersionNo 上一次同步的版本号* return*/private ListBomAssemblyDto assemblingData(int pageSize, String lastSyncVersionNo) {// 先查询车型ListBomAssemblyVo selectedCarData selectCarData();// todo 暂时过滤一下数据只查询一个车型// ListBomAssemblyVo collect selectedCarData.stream().filter(bomAssemblyVo - bomAssemblyVo.getMaterielId().equals(23821)).collect(Collectors.toList());// 构建 md_material_id 到 BomAssemblyVo 的映射MapString, BomAssemblyVo carDataMap selectedCarData.stream().collect(Collectors.toMap(BomAssemblyVo::getMaterielId, vo - vo));// MapString, BomAssemblyVo carDataMap collect.stream().collect(Collectors.toMap(BomAssemblyVo::getMaterielId, vo - vo));/*步骤1、先是查询出基础总成数据2、先查询车型拿到车型的md_material_id3、根据拿到每个车型的md_material_id 查询 bm_part_assembly表的master_part_id就得到了得到sub_part_id4、得到sub_part_id 查询bm_md_material表得到了下级总成循环类推递归5、查询的下级放在BomAssemblyVo里面的children集合里面6、拼装数据把查询生效ECN编号、数据量很大100多万数据能不能用stream流、递归、树形结构select bmm.md_material_id as materialId, bmm.material_name materielName, bmm.material_num from bm_md_material bmmwhere md_material_id in #{materialId}*/ListBomAssemblyDto result new ArrayList();// 用carDataMap key查询数据carDataMap.forEach((masterPartId, value) - {// 获取总数Integer totalCount assentlyCount(masterPartId);double totalPage Math.ceil((double) totalCount / pageSize);// 分页处理for (int currentPage 0; currentPage totalPage; currentPage) {int offset currentPage * pageSize;// 根据查询的车型的id的这个key查询获取sub_part_id在这里bomAssemblyVos获取sub_part_id值获得sub_part_id值后再次用bomAssemblyMaterialPartsMapper.syncDataByPage查询把查询到的sub_part_id值传入到key的位置直到查询不到数据// 第一次查询的是父节点递归出来的后面的查询是子节点放在children里面ListBomAssemblyVo bomAssemblyVos bomAssemblyMaterialPartsMapper.syncDataByPage(offset, pageSize, lastSyncVersionNo, masterPartId);// todo 临时测试用// ListBomAssemblyVo bomAssemblyVos bomAssemblyVoList.stream().filter(bomAssemblyVo - bomAssemblyVo.getSubPartId().equals(64332)).collect(Collectors.toList());// ListBomAssemblyVo bomAssemblyVos bomAssemblyVoList.stream().filter(bomAssemblyVo - bomAssemblyVo.getSubPartId().equals(98535)).collect(Collectors.toList());// ListBomAssemblyVo bomAssemblyVos bomAssemblyVoList.stream().filter(bomAssemblyVo - bomAssemblyVo.getSubPartId().equals(64332)).collect(Collectors.toList());// BOM分类车型数据LambdaQueryWrapperBomCategory queryWrapper new LambdaQueryWrapper();queryWrapper.eq(BomCategory::getIsCar, 1);ListBomCategory bomCategories bomCategoryService.list(queryWrapper);// 车型名称String carType value.getMaterielCnName();// 在这里获取所有的分类名称categoryName和id如果categoryName与carType比较// 如果匹配上就把bomCategories的id给BomAssemblyVo对象的bomCategoryId并保存数据否则就不保存数据// 查找匹配的车型分类OptionalBomCategory categoryOptional bomCategories.stream().filter(cat - cat.getCategoryName().equals(carType)).findFirst();if (categoryOptional.isPresent()) {String categoryId categoryOptional.get().getId();// 设置categoryId到每个BomAssemblyVo对象setCategoryIdRecursively(bomAssemblyVos, categoryId);} else {// 如果没有匹配的分类则跳过这些数据return;}// 补充 materialName 和 materialNum 对于父节点SetString parentIds bomAssemblyVos.stream().map(BomAssemblyVo::getSubPartId).filter(Objects::nonNull).collect(Collectors.toSet());if (!parentIds.isEmpty()) {ListBomAssemblyVo parentDetails selectByMaterialIds(new ArrayList(parentIds));MapString, BomAssemblyVo parentDetailMap parentDetails.stream().collect(Collectors.toMap(BomAssemblyVo::getMaterielId, vo - vo));for (BomAssemblyVo assembly : bomAssemblyVos) {BomAssemblyVo detail parentDetailMap.get(assembly.getSubPartId());if (detail ! null) {assembly.setMaterielCnName(detail.getMaterielCnName());assembly.setMaterielEnName(detail.getMaterielEnName());assembly.setMaterielCode(detail.getMaterielCode());assembly.setPartCode(detail.getPartCode());assembly.setCarType(detail.getCarType());assembly.setEcnNumberEffect(detail.getEcnNumberEffect());assembly.setPartNumber(detail.getPartNumber());assembly.setBomType(detail.getBomType());}}}// 再组装数据for (BomAssemblyVo assembly : bomAssemblyVos) {buildTree(assembly, offset, pageSize, lastSyncVersionNo);String changeId assembly.getChangeId();String changeCode selectEcnNumberEffect(changeId);String employeeId assembly.getEmployeeId();String userName ;String organizationId ;if (StringUtils.isNotBlank(employeeId)) {// BOM责任工程师BomAssemblyVo bomAssemblyVo bomResponsibleEngineer(employeeId);if (bomAssemblyVo ! null) {userName bomAssemblyVo.getUserName();organizationId bomAssemblyVo.getOrganizationId();}}String bomResponsibleDepartment ;if (StringUtils.isNotBlank(organizationId)) {// BOM责任部门BomAssemblyVo assemblyVo bomResponsibleDepartment(organizationId);if (assemblyVo ! null) {bomResponsibleDepartment assemblyVo.getBomResponsibleDepartment();}}assembly.setUserName(userName);assembly.setBomResponsibleDepartment(bomResponsibleDepartment);BomAssemblyDto bomAssemblyDto new BomAssemblyDto();BeanUtils.copyProperties(assembly, bomAssemblyDto);bomAssemblyDto.setChildren(convertToBomAssemblyDtos(assembly.getChildren(), changeCode));result.add(bomAssemblyDto);}}});log.info(result::::::::: result);// 拼装数据包括生效ECN编号等信息// convertToBomAssemblyMaterialParts(result);return result;}private void setCategoryIdRecursively(ListBomAssemblyVo bomAssemblyVos, String categoryId) {for (BomAssemblyVo assembly : bomAssemblyVos) {assembly.setBomCategoryId(categoryId);if (assembly.getChildren() ! null !assembly.getChildren().isEmpty()) {setCategoryIdRecursively(assembly.getChildren(), categoryId);}}}private void buildTree(BomAssemblyVo parent, int pageNo, int pageSize, String lastSyncVersionNo) {if (parent null || parent.getSubPartId() null) {return;}ListBomAssemblyVo children bomAssemblyMaterialPartsMapper.syncDataByPage(pageNo, pageSize, lastSyncVersionNo, parent.getSubPartId());// 补充 materialName 和 materialNumSetString subPartIds children.stream().map(BomAssemblyVo::getSubPartId).filter(Objects::nonNull).collect(Collectors.toSet());if (!subPartIds.isEmpty()) {ListBomAssemblyVo materialDetails selectByMaterialIds(new ArrayList(subPartIds));MapString, BomAssemblyVo materialDetailMap materialDetails.stream().collect(Collectors.toMap(BomAssemblyVo::getMaterielId, vo - vo));for (BomAssemblyVo child : children) {BomAssemblyVo detail materialDetailMap.get(child.getSubPartId());if (detail ! null) {child.setMaterielCnName(detail.getMaterielCnName());child.setMaterielEnName(detail.getMaterielEnName());child.setMaterielCode(detail.getMaterielCode());child.setPartCode(detail.getPartCode());child.setCarType(detail.getCarType());child.setEcnNumberEffect(detail.getEcnNumberEffect());child.setPartNumber(detail.getPartNumber());child.setBomType(detail.getBomType());}}}parent.setChildren(children);for (BomAssemblyVo child : children) {buildTree(child, pageNo, pageSize, lastSyncVersionNo);}}/*** 查询车型** return*/private ListBomAssemblyVo selectCarData() {ListBomAssemblyVo list bomAssemblyMaterialPartsMapper.selectCarData();return list;}/*** 查询生效ECN编号** return*/private String selectEcnNumberEffect(String changeId) {return bomAssemblyMaterialPartsMapper.selectEcnNumberEffect(changeId);}/*** 根据物料id查询总成下级数据** param materialIds* return*/private ListBomAssemblyVo selectByMaterialIds(ListString materialIds) {/*这个sql是这样的select bmm.md_material_id as materialId, bmm.material_name materielName, bmm.material_num from bm_md_material bmmwhere md_material_id in #{materialIds}*/if (materialIds null || materialIds.isEmpty()) {return Collections.emptyList();}return bomAssemblyMaterialPartsMapper.selectByMaterialId(materialIds);}/*** BOM责任工程师** return*/private BomAssemblyVo bomResponsibleEngineer(String employeeId) {return bomAssemblyMaterialPartsMapper.bomResponsibleEngineer(employeeId);}/*** BOM责任部门** param organizationId* return*/private BomAssemblyVo bomResponsibleDepartment(String organizationId) {return bomAssemblyMaterialPartsMapper.bomResponsibleDepartment(organizationId);}/*** 同步版本号** return*/private LocalDateTime selectLastSyncUpdateDate() {LocalDateTime lastSyncUpdateDate bomAssemblyMaterialPartsMapper.selectLastSyncUpdateDate();log.info(最新版本号{}, lastSyncUpdateDate);return lastSyncUpdateDate;}Overridepublic Integer assentlyCount(String masterPartId) {Integer assentlyCount bomAssemblyMaterialPartsMapper.assentlyCount(masterPartId);return assentlyCount null ? 0 : assentlyCount;}} /*** p* BOM总成材料零件表 服务类* /p** author 袁腾飞* since 2024-10-14*/ public interface BomAssemblyMaterialPartsService extends IServiceBomAssemblyMaterialParts {IPageBomAssemblyMaterialParts pageListCondition(PagingQuery pagingQuery, BomAssemblyQuery queryParam);ListBomAssembyMaterialPartsVO ListById(String bomId);ListBomAssemblyMaterialParts listCondition(PagingQuery pagingQuery, BomAssemblyQuery queryParam);ListBomAssemblyMaterialParts syncDataByPage(int pageSize);Integer assentlyCount(String masterPartId); } 定时任务层 /*** 同步总成数据*/ Slf4j Lazy(value false) Component // PropertySource(value classpath:jobTask.properties,encoding UTF-8) public class SyncWholeData {Autowiredprivate BomAssemblyMaterialPartsService bomAssemblyMaterialPartsService;Resourceprivate StringRedisTemplate stringRedisTemplate;Value(${pageSize})private Integer pageSize;/*** 同步总成数据*/Transactional(rollbackFor Exception.class)AsyncScheduled(cron ${inactiveaccountCron})public void syncWhole1() {String lockKey lock:sync:whole:;boolean isLocked tryLock(lockKey);try {if (isLocked) {// 成功获取锁执行同步逻辑bomAssemblyMaterialPartsService.syncDataByPage(pageSize);}} finally {unlock(lockKey);}}/*** 尝试获取锁** param key* return*/private boolean tryLock(String key) {// setIfAbsent 如果存在Boolean flag stringRedisTemplate.opsForValue().setIfAbsent(key, 1, 2, TimeUnit.HOURS);return BooleanUtil.isTrue(flag);}/*** 释放锁** param key*/private void unlock(String key) {stringRedisTemplate.delete(key);}}
http://www.w-s-a.com/news/554495/

相关文章:

  • 了解做房产广告的网站手机版官方网站的建设
  • 如何与别的网站做友情链接做网站排名大概要多少钱
  • 东莞市锂电池网站建设HTML5怎么做自适应网站
  • 江苏城乡建设学校网站群晖建立wordpress
  • wordpress导入网站模板seo自学网官网
  • 购物网站服务器带宽北京网站开发周期
  • 同性做视频网站网站怎么添加栏目
  • 新余网站设计seo自学网站
  • 新乡个人网站建设价格wordpress数据插件
  • 你是网站设计有限公司的项目经理网站推广的重要性
  • 网站定制开发怎么写泸州设计公司有哪些
  • 上海网站建设zj kt迅速编程做网站
  • 郑州服装 网站建设网站栏目合理性
  • 平面设计在线网站最新汽油价格调整最新消息
  • 刷单网站建设wordpress缩略图 裁剪
  • 视差 网站泰州公司做网站
  • 广州网站优化系统怎么做淘客网站
  • 类似凡科互动的网站wordpress网站下载
  • 临沂网站制作公司安卓app开发实例教程
  • 泰州做网站 泰公网络科技公司网站升级中html
  • 如何做授权网站网站设计心得
  • 网站排名快速上升wordpress自动标签页
  • 做的好的手机网站有哪些万网域名交易
  • 网站怎么做漂亮点做陶瓷的公司网站
  • 软件开发设计制作网站下载自己怎么做视频收费网站
  • 江苏省建设安全协会网站天津网站建设哪家公司好
  • 资源类网站怎么做的网站上线准备工作
  • 长沙专业网站建设怎么做企业建站公司服务
  • 肇庆市有限公司网站建设手机直接看的网站有哪些
  • 织梦修改网站后备份英语作文模板高中