From 58ed6f83836cb34fa5eefee5f1bc1299f1508ef3 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Fri, 7 Mar 2025 13:24:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E5=8C=85=E8=A3=85=E5=8D=95?= =?UTF-8?q?=E4=BD=8D=E6=95=88=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supermarket/vo/cgdd/SmErpCgDdVo.java | 2 +- .../SmErpInventoryRecordsController.java | 1 - .../service/impl/SmErpCgDdServiceImpl.java | 4 +- .../SmErpInventoryRecordsServiceImpl.java | 8 ++-- .../service/impl/SmErpSpuServiceImpl.java | 43 ++++++++++++++++--- .../src/main/resources/mapper/SmSpuMapper.xml | 2 +- 6 files changed, 48 insertions(+), 12 deletions(-) diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgdd/SmErpCgDdVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgdd/SmErpCgDdVo.java index c7559125e..dc721152d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgdd/SmErpCgDdVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/cgdd/SmErpCgDdVo.java @@ -21,7 +21,7 @@ public class SmErpCgDdVo { private String code; - @Schema(description="据日期") + @Schema(description="单据日期") private LocalDate ddDate; /** diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java index 52fc10988..d3b9b5294 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java @@ -207,7 +207,6 @@ public class SmErpInventoryRecordsController { @Operation(summary = "获取出入库订单分页" , description = "关联订单" ) @GetMapping("/inventory/page" ) public R getInventoryPage(@ParameterObject Page page, @ParameterObject InventoryLinkQueryDTO inventoryLinkQueryDTO) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.like(StrUtil.isNotBlank(inventoryLinkQueryDTO.getCode()),SmErpInventoryRecordsEntity::getInventoryCode,inventoryLinkQueryDTO.getCode()); wrapper.eq(Objects.nonNull(inventoryLinkQueryDTO.getDdDate()),SmErpInventoryRecordsEntity::getInventoryDate,inventoryLinkQueryDTO.getDdDate()); diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java index b99455cfd..316562e00 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgDdServiceImpl.java @@ -107,7 +107,9 @@ public class SmErpCgDdServiceImpl extends ServiceImpl pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of()); List records = pageData.getRecords(); - + if (CollectionUtils.isEmpty(records)){ + return pageData; + } // 2. 提前收集所有主表ID(去重处理) Set planIds = records.stream() .map(SmErpCgDdEntity::getId) diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java index 9897f2aa5..d94f81ba0 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java @@ -162,11 +162,13 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl wrapper) { Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of()); - List records = pageData.getRecords(); - + List records = pageData.getRecords(); + if (CollectionUtils.isEmpty(records)){ + return pageData; + } // 2. 提前收集所有主表ID(去重处理) Set planIds = records.stream() - .map(SmErpCgPlanEntity::getId) + .map(SmErpInventoryRecordsEntity::getId) .collect(Collectors.toSet()); // 3. 批量查询所有子表数据(仅1次数据库查询) diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java index ce7da6ba5..c1d87ec14 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java @@ -109,6 +109,10 @@ public class SmErpSpuServiceImpl extends ServiceImpl smErpUnitEntityList = supermarketSpu.getSmErpUnitEntityList(); + List isBaseNum = smErpUnitEntityList.stream().filter(smErpUnitEntity -> smErpUnitEntity.getIsBase() == true).collect(Collectors.toList()); + if (isBaseNum.size()!=1){ + return R.failed("必须且只能指定一个基础包装单位!"); + } if (CollectionUtils.isNotEmpty(smErpUnitEntityList)) { smErpUnitEntityList.forEach(supermarketUnitEntity -> supermarketUnitEntity.setSpuId(supermarketSpu.getId())); smErpUnitService.saveBatch(smErpUnitEntityList); @@ -153,15 +157,44 @@ public class SmErpSpuServiceImpl extends ServiceImpl smErpUnitEntityList = supermarketSpu.getSmErpUnitEntityList(); + if (CollectionUtils.isNotEmpty(smErpUnitEntityList)) { + + List baseUnits = smErpUnitEntityList.stream() + .filter(unit -> Boolean.TRUE.equals(unit.getIsBase())) + .collect(Collectors.toList()); + + // 检查基础单位数量 + if ( baseUnits.size() != 1) { + return R.failed("必须且只能指定一个基础包装单位!"); + } + //id为null新增 - List insertCollect = smErpUnitEntityList.stream() + List insertUnits = smErpUnitEntityList.stream() .filter(supermarketUnitEntity -> supermarketUnitEntity.getId() == null).collect(Collectors.toList()); - insertCollect.forEach(supermarketUnitEntity -> supermarketUnitEntity.setSpuId(supermarketSpu.getId())); - List updateCollect = smErpUnitEntityList.stream() + insertUnits.forEach(supermarketUnitEntity -> supermarketUnitEntity.setSpuId(supermarketSpu.getId())); + List updateUnits = smErpUnitEntityList.stream() .filter(supermarketUnitEntity -> supermarketUnitEntity.getId() != null).collect(Collectors.toList()); - smErpUnitService.updateBatchById(updateCollect); - smErpUnitService.saveBatch(insertCollect); + smErpUnitService.updateBatchById(updateUnits); + smErpUnitService.saveBatch(insertUnits); + //判断是否修改了基础包装单位,如果修改了基础包装单位的类型,其他的要变成false + // 获取当前有效的基础单位ID(处理新增单位的情况) + Long currentBaseUnitId = baseUnits.get(0).getId() != null ? + baseUnits.get(0).getId() : + insertUnits.stream() + .filter(SmErpUnitEntity::getIsBase) + .findFirst() + .map(SmErpUnitEntity::getId) + .orElse(null); + // 更新其他单位为非基础 + if (currentBaseUnitId != null) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper + .eq(SmErpUnitEntity::getSpuId, supermarketSpu.getId()) + .ne(SmErpUnitEntity::getId, currentBaseUnitId) + .set(SmErpUnitEntity::getIsBase, false); + smErpUnitService.update(updateWrapper); + } } else { return R.failed("包装类型不能为空"); } diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmSpuMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmSpuMapper.xml index 57c96840c..076a8194f 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmSpuMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmSpuMapper.xml @@ -40,7 +40,7 @@ LEFT JOIN sm_erp_spu esp on sp.erp_spu_id = esp.id LEFT JOIN sm_erp_unit u - on esp.id=u.spu_id + on esp.id=u.spu_id and u.is_base=1 LEFT JOIN sm_erp_stock stock on esp.id = stock.erp_spu_id