From 7b21774862779cec3770257254a5c58a13cb4d1b Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Thu, 2 Jul 2026 14:33:56 +0800 Subject: [PATCH] =?UTF-8?q?2026-07-02=20=E4=BC=98=E5=8C=96=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=EF=BC=88=E4=BA=BA=E5=91=98=E7=AD=89?= =?UTF-8?q?=E7=BA=A7=E3=80=81=E5=8A=A0=E5=B7=A5=E4=B8=AD=E5=BF=83=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/RoutingManagementServiceImpl.java | 31 +++++---- .../modules/part/task/PartRelatedTask.java | 66 ++++++++++++++----- 2 files changed, 66 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/spring/modules/part/service/impl/RoutingManagementServiceImpl.java b/src/main/java/com/spring/modules/part/service/impl/RoutingManagementServiceImpl.java index 0906b042..8e205473 100644 --- a/src/main/java/com/spring/modules/part/service/impl/RoutingManagementServiceImpl.java +++ b/src/main/java/com/spring/modules/part/service/impl/RoutingManagementServiceImpl.java @@ -1588,12 +1588,16 @@ public class RoutingManagementServiceImpl extends ServiceImpl> updatesBySite = toUpdate.stream() + .collect(Collectors.groupingBy(PersonnelLevel::getSite)); int batchSize = 100; // 假设每批100条记录 - for (int i = 0; i < toUpdate.size(); i += batchSize) { - int end = Math.min(i + batchSize, toUpdate.size()); - List subList = toUpdate.subList(i, end); - routingManagementMapper.syncUpdateLaborClass(subList); + for (List siteUpdateList : updatesBySite.values()) { + for (int i = 0; i < siteUpdateList.size(); i += batchSize) { + int end = Math.min(i + batchSize, siteUpdateList.size()); + List subList = siteUpdateList.subList(i, end); + routingManagementMapper.syncUpdateLaborClass(subList); + } } } } @@ -1667,16 +1671,17 @@ public class RoutingManagementServiceImpl extends ServiceImpl> updatesBySite = toUpdate.stream() + .collect(Collectors.groupingBy(WorkCenter::getSite)); int batchSize = 50; // 假设每批100条记录 - for (int i = 0; i < toUpdate.size(); i += batchSize) { - int end = Math.min(i + batchSize, toUpdate.size()); - List subList = toUpdate.subList(i, end); - routingManagementMapper.syncUpdateWorkCenter(subList); + for (List siteUpdateList : updatesBySite.values()) { + for (int i = 0; i < siteUpdateList.size(); i += batchSize) { + int end = Math.min(i + batchSize, siteUpdateList.size()); + List subList = siteUpdateList.subList(i, end); + routingManagementMapper.syncUpdateWorkCenter(subList); + } } -// for (WorkCenter workCenter : toUpdate) { -// routingManagementMapper.syncUpdateWorkCenter(workCenter); -// } } } diff --git a/src/main/java/com/spring/modules/part/task/PartRelatedTask.java b/src/main/java/com/spring/modules/part/task/PartRelatedTask.java index 4eddc6fd..4de8c9d6 100644 --- a/src/main/java/com/spring/modules/part/task/PartRelatedTask.java +++ b/src/main/java/com/spring/modules/part/task/PartRelatedTask.java @@ -1,12 +1,8 @@ package com.spring.modules.part.task; -import com.spring.common.utils.DateUtils; import com.spring.modules.base.vo.PersonnelLevelVo; import com.spring.modules.base.vo.WorkCenterCostVo; -import com.spring.modules.part.service.PartInformationService; -import com.spring.modules.part.service.PartService; import com.spring.modules.part.service.RoutingManagementService; -import com.spring.modules.part.vo.InventoryPartUnitCostSumVo; import com.spring.modules.part.vo.LocationInformationVo; import com.spring.modules.part.vo.WorkCenterVo; import lombok.extern.slf4j.Slf4j; @@ -19,6 +15,11 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + @Component @Configuration @EnableScheduling @@ -34,51 +35,80 @@ public class PartRelatedTask { @Scheduled(cron = "${task.data.syncDataToPLM}") public void executeDeviceCollect() { - String siteCon = convertToSQLString(useSite); - + String siteCon = buildSiteCon(); + if ("()".equals(siteCon)) { + logger.warn("未配置可用站点,跳过同步。use-site={}", useSite); + return; + } + // 同步人员等级 try { - logger.info("开始同步人员等级..."); + logger.info("开始同步人员等级,siteCon={}", siteCon); PersonnelLevelVo laborClassVo = new PersonnelLevelVo(); laborClassVo.setSiteCon(siteCon); routingManagementService.syncLaborClassToPLM(laborClassVo); - logger.info("同步人员等级完成"); + logger.info("同步人员等级完成,siteCon={}", siteCon); } catch (Exception e) { - logger.error("同步人员等级失败: " + e.getMessage(), e); + logger.error("同步人员等级失败,siteCon={},error={}", siteCon, e.getMessage(), e); } - + // 同步加工中心 try { - logger.info("开始同步加工中心..."); + logger.info("开始同步加工中心,siteCon={}", siteCon); WorkCenterVo workCenterVo = new WorkCenterVo(); workCenterVo.setSiteCon(siteCon); routingManagementService.syncWorkCenterToPLM(workCenterVo); - logger.info("同步加工中心完成"); + logger.info("同步加工中心完成,siteCon={}", siteCon); } catch (Exception e) { - logger.error("同步加工中心失败: " + e.getMessage(), e); + logger.error("同步加工中心失败,siteCon={},error={}", siteCon, e.getMessage(), e); } - + // 同步加工中心成本 try { - logger.info("开始同步加工中心成本..."); + logger.info("开始同步加工中心成本,siteCon={}", siteCon); WorkCenterCostVo workCenterCostVo = new WorkCenterCostVo(); workCenterCostVo.setSiteCon(siteCon); routingManagementService.syncWorkCenterCostToPLM(workCenterCostVo); - logger.info("同步加工中心成本完成"); + logger.info("同步加工中心成本完成,siteCon={}", siteCon); } catch (Exception e) { - logger.error("同步加工中心成本失败: " + e.getMessage(), e); + logger.error("同步加工中心成本失败,siteCon={},error={}", siteCon, e.getMessage(), e); } } @Scheduled(cron = "${task.data.syncLocationToPLM}") public void executeDeviceCollect2() { - String siteCon = convertToSQLString(useSite); + String siteCon = buildSiteCon(); + if ("()".equals(siteCon)) { + logger.warn("未配置可用站点,跳过库位同步。use-site={}", useSite); + return; + } + // 同步库位 LocationInformationVo locationVo = new LocationInformationVo(); locationVo.setSiteCon(siteCon); routingManagementService.syncLocationToPLM(locationVo); } + private List parseSites(String siteConfig) { + if (siteConfig == null || siteConfig.trim().isEmpty()) { + return Collections.emptyList(); + } + + return Arrays.stream(siteConfig.split(",")) + .map(String::trim) + .filter(site -> !site.isEmpty()) + .distinct() + .collect(Collectors.toList()); + } + + private String buildSiteCon() { + List sites = parseSites(useSite); + if (sites.isEmpty()) { + return "()"; + } + return convertToSQLString(String.join(",", sites)); + } + public static String convertToSQLString(String input) { if (input == null || input.isEmpty()) { return "()";