From cf110a3c3755113b231b0e32bbe89b1b77eece73 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Fri, 28 Mar 2025 15:32:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=BF=E6=9D=90=E3=80=81=E9=85=8D=E4=BB=B6?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E9=87=8D=E5=A4=8D=E4=BB=A3=E7=A0=81=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E3=80=81=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/parts/PartsServiceImpl.java | 116 +++++++++++------- .../manage/plate/PlateManageServiceImpl.java | 91 ++++++++------ 2 files changed, 124 insertions(+), 83 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/parts/PartsServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/parts/PartsServiceImpl.java index ee16e3403..61f0a15ef 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/parts/PartsServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/parts/PartsServiceImpl.java @@ -13,7 +13,9 @@ import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsCadPage import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsImportExcelVO; import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsPageReqVO; import com.cf.imes.module.executor.controller.admin.manage.parts.vo.PartsSaveReqVO; +import com.cf.imes.module.executor.controller.admin.manage.plate.vo.plate.PlateImportExcelVO; import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO; +import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO; import com.cf.imes.module.executor.dal.mysql.orderParts.PartsBatchMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper; import com.cf.imes.module.executor.enums.manage.parts.CategoryEnum; @@ -275,54 +277,25 @@ public class PartsServiceImpl implements PartsService { for (List batch : batches) { threadPoolTaskExecutor.submit(() -> { - threadPoolTaskExecutor.submit(() -> { - try { - // 子线程同步主线程的多数据源 - DynamicDataSourceContextHolder.push(peek); + try { + // 子线程同步主线程的多数据源 + DynamicDataSourceContextHolder.push(peek); - List goodsIds = batch.stream().map(PartsImportExcelVO::getGoodsId).collect(Collectors.toList()); - Map partsMap = partsMapper.selectList( - new LambdaQueryWrapper().in(PartsDO::getGoodsId, goodsIds).eq(PartsDO::getOrganId, organId)) - .stream().collect(Collectors.toMap(PartsDO::getGoodsId, p -> p)); + List goodsIds = batch.stream().map(PartsImportExcelVO::getGoodsId).collect(Collectors.toList()); + Map partsMap = partsMapper.selectList( + new LambdaQueryWrapper().in(PartsDO::getGoodsId, goodsIds).eq(PartsDO::getOrganId, organId)) + .stream().collect(Collectors.toMap(PartsDO::getGoodsId, p -> p)); - for (PartsImportExcelVO importPart : batch) { - PartsDO existPlate = partsMap.get(importPart.getGoodsId()); - if (existPlate == null) { - PartsDO partsDO = BeanUtils.toBean(importPart, PartsDO.class).setOrganId(organId); - partsDO.setIsComposite(ObjectUtil.isNull(partsDO.getIsComposite()) ? false : partsDO.getIsComposite()) - .setCategory(getEmpty(partsDO.getCategory())) - .setSubparts(getEmpty(partsDO.getType())) - .setColor(getEmpty(partsDO.getColor())) - .setFactory(getEmpty(partsDO.getFactory())) - .setRemark(getEmpty(partsDO.getRemark())) - .setBrand(getEmpty(partsDO.getBrand())) - .setModel(getEmpty(partsDO.getModel())) - .setSpec(getEmpty(partsDO.getSpec())) - .setMaterial(getEmpty(partsDO.getMaterial())) - .setLength(getZeroDouble(partsDO.getLength())) - .setWidth(getZeroDouble(partsDO.getWidth())) - .setThickness(getZeroDouble(partsDO.getThickness())) - .setPrice(getZeroDouble(partsDO.getPrice())) - .setUnit(getEmpty(partsDO.getUnit())) - .setOrganId(organId) - .setDeleted(false); - insertList.add(partsDO); - } else if (!isUpdateSupport) { - PartsDO partsDO = BeanUtils.toBean(importPart, PartsDO.class) - .setOrganId(organId) - .setId(existPlate.getId()); - updateList.add(partsDO); - } - } - } catch (Exception e) { - boolean b = hasError.get(); - if (!b) { - hasError.set(true); - } - } finally { - latch.countDown(); // 任务完成,计数器减1 + // 整理到insertLis、updateList + doBatch(batch, partsMap, organId, isUpdateSupport, insertList, updateList); + } catch (Exception e) { + boolean b = hasError.get(); + if (!b) { + hasError.set(true); } - }); + } finally { + latch.countDown(); // 任务完成,计数器减1 + } }); } @@ -336,6 +309,49 @@ public class PartsServiceImpl implements PartsService { return hasError.get(); } + /** + * 遍历批次列表,存在更新,不存在新增 + * + * @param batch + * @param partsMap 已经存在goodsId的part map + * @param organId + * @param isUpdateSupport + * @param insertList + * @param updateList + */ + private void doBatch(List batch, Map partsMap, Long organId, + boolean isUpdateSupport, List insertList, List updateList) { + for (PartsImportExcelVO importPart : batch) { + PartsDO existPlate = partsMap.get(importPart.getGoodsId()); + if (existPlate == null) { + PartsDO partsDO = BeanUtils.toBean(importPart, PartsDO.class).setOrganId(organId); + partsDO.setIsComposite(getDefaultFalse(partsDO.getIsComposite())) + .setCategory(getEmpty(partsDO.getCategory())) + .setSubparts(getEmpty(partsDO.getType())) + .setColor(getEmpty(partsDO.getColor())) + .setFactory(getEmpty(partsDO.getFactory())) + .setRemark(getEmpty(partsDO.getRemark())) + .setBrand(getEmpty(partsDO.getBrand())) + .setModel(getEmpty(partsDO.getModel())) + .setSpec(getEmpty(partsDO.getSpec())) + .setMaterial(getEmpty(partsDO.getMaterial())) + .setLength(getZeroDouble(partsDO.getLength())) + .setWidth(getZeroDouble(partsDO.getWidth())) + .setThickness(getZeroDouble(partsDO.getThickness())) + .setPrice(getZeroDouble(partsDO.getPrice())) + .setUnit(getEmpty(partsDO.getUnit())) + .setOrganId(organId) + .setDeleted(false); + insertList.add(partsDO); + } else if (!isUpdateSupport) { + PartsDO partsDO = BeanUtils.toBean(importPart, PartsDO.class) + .setOrganId(organId) + .setId(existPlate.getId()); + updateList.add(partsDO); + } + } + } + /** * 每batchSize条数据处理一次DO * @@ -394,6 +410,16 @@ public class PartsServiceImpl implements PartsService { return ObjectUtil.defaultIfNull(value, 0.0); } + /** + * value为空返回false + * + * @param value + * @return + */ + private Boolean getDefaultFalse(Boolean value) { + return ObjectUtil.defaultIfNull(value, false); + } + @Override public List getPartAll(String category) { return partsMapper.getAllByOrganId(OrganContextHolder.getOrganId(), category); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/plate/PlateManageServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/plate/PlateManageServiceImpl.java index f64c047c2..a96698a49 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/plate/PlateManageServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/manage/plate/PlateManageServiceImpl.java @@ -209,44 +209,26 @@ public class PlateManageServiceImpl implements PlateManageService { for (List batch : batches) { threadPoolTaskExecutor.submit(() -> { - threadPoolTaskExecutor.submit(() -> { - try { - // 子线程同步主线程的多数据源 - DynamicDataSourceContextHolder.push(peek); + try { + // 子线程同步主线程的多数据源 + DynamicDataSourceContextHolder.push(peek); - List goodsIds = batch.stream().map(PlateImportExcelVO::getGoodsId).collect(Collectors.toList()); - Map plateGoodMap = plateGoodMapper.selectList( - new LambdaQueryWrapper().in(PlateGoodDO::getGoodsId, goodsIds).eq(PlateGoodDO::getOrganId, organId)) - .stream().collect(Collectors.toMap(PlateGoodDO::getGoodsId, p -> p)); + List goodsIds = batch.stream().map(PlateImportExcelVO::getGoodsId).collect(Collectors.toList()); + Map plateGoodMap = plateGoodMapper.selectList( + new LambdaQueryWrapper().in(PlateGoodDO::getGoodsId, goodsIds).eq(PlateGoodDO::getOrganId, organId)) + .stream().collect(Collectors.toMap(PlateGoodDO::getGoodsId, p -> p)); - for (PlateImportExcelVO importPart : batch) { - PlateGoodDO existPlate = plateGoodMap.get(importPart.getGoodsId()); - if (existPlate == null) { - PlateGoodDO plateGoodDO = BeanUtils.toBean(importPart, PlateGoodDO.class).setOrganId(organId); - plateGoodDO.setColorBlack(EMPTY_STRING) - .setBrand(EMPTY_STRING) - .setSpec(getEmpty(plateGoodDO.getSpec())) - .setRemark(getEmpty(plateGoodDO.getRemark())) - .setTexture(ObjectUtil.isNull(plateGoodDO.getTexture()) ? false : plateGoodDO.getTexture()) - .setOrganId(organId) - .setDeleted(false); - insertList.add(plateGoodDO); - } else if (!isUpdateSupport) { - PlateGoodDO plateGoodDO = BeanUtils.toBean(importPart, PlateGoodDO.class) - .setOrganId(organId) - .setId(existPlate.getId()); - updateList.add(plateGoodDO); - } - } - } catch (Exception e) { - boolean b = hasError.get(); - if (!b) { - hasError.set(true); - } - } finally { - latch.countDown(); // 任务完成,计数器减1 + // 整理到insertLis、updateList + doBatch(batch, plateGoodMap, organId, isUpdateSupport, insertList, updateList); + + } catch (Exception e) { + boolean b = hasError.get(); + if (!b) { + hasError.set(true); } - }); + } finally { + latch.countDown(); // 任务完成,计数器减1 + } }); } @@ -260,6 +242,39 @@ public class PlateManageServiceImpl implements PlateManageService { return hasError.get(); } + /** + * 遍历批次列表,存在更新,不存在新增 + * + * @param batch + * @param plateGoodMap 已经存在goodsId的plate map + * @param organId + * @param isUpdateSupport + * @param insertList + * @param updateList + */ + private void doBatch(List batch, Map plateGoodMap, Long organId, + boolean isUpdateSupport, List insertList, List updateList) { + for (PlateImportExcelVO importPart : batch) { + PlateGoodDO existPlate = plateGoodMap.get(importPart.getGoodsId()); + if (existPlate == null) { + PlateGoodDO plateGoodDO = BeanUtils.toBean(importPart, PlateGoodDO.class).setOrganId(organId); + plateGoodDO.setColorBlack(EMPTY_STRING) + .setBrand(EMPTY_STRING) + .setSpec(getEmpty(plateGoodDO.getSpec())) + .setRemark(getEmpty(plateGoodDO.getRemark())) + .setTexture(getDefaultFalse(plateGoodDO.getTexture())) + .setOrganId(organId) + .setDeleted(false); + insertList.add(plateGoodDO); + } else if (!isUpdateSupport) { + PlateGoodDO plateGoodDO = BeanUtils.toBean(importPart, PlateGoodDO.class) + .setOrganId(organId) + .setId(existPlate.getId()); + updateList.add(plateGoodDO); + } + } + } + /** * 每batchSize条数据处理一次DO * @@ -309,13 +324,13 @@ public class PlateManageServiceImpl implements PlateManageService { } /** - * value为空返回0.0 + * value为空返回false * * @param value * @return */ - private double getZeroDouble(Double value) { - return ObjectUtil.defaultIfNull(value, 0.0); + private Boolean getDefaultFalse(Boolean value) { + return ObjectUtil.defaultIfNull(value, false); } @Override