From e8725d0f9839ee18fc0d3e4118fcf44acb2e2f62 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Fri, 23 May 2025 16:49:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B6=85=E5=B8=82erp?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E4=BB=B7=EF=BC=8C=E4=BF=AE=E5=A4=8D=E9=A3=9F?= =?UTF-8?q?=E5=A0=82=E8=BF=9B=E9=94=80=E7=BC=96=E8=BE=91=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CanteenInventoryRecordsServiceImpl.java | 6 ++-- .../supermarket/entity/SmErpSpuEntity.java | 2 +- .../vo/sm/smspu/SmErpCostPriceVo.java | 21 +++++++++++ .../SmErpInventoryRecordsItemMapper.java | 8 +++++ .../SmErpInventoryRecordsServiceImpl.java | 36 ++++++++++++++++++- .../SmErpInventoryRecordsItemMapper.xml | 16 +++++++++ 6 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/sm/smspu/SmErpCostPriceVo.java diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenInventoryRecordsServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenInventoryRecordsServiceImpl.java index dd14a2f55..e8eed91c4 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenInventoryRecordsServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenInventoryRecordsServiceImpl.java @@ -88,6 +88,7 @@ public class CanteenInventoryRecordsServiceImpl extends ServiceImpl insertItems = CanteenInventoryRecordsItemEntityList.stream(). filter(CanteenInventoryRecordsItemEntity -> CanteenInventoryRecordsItemEntity.getId() == null).collect(Collectors.toList()); + insertItems.forEach(item -> {item.setInventoryId(smErpInventoryRecordsEntity.getId());}); List updateItems = CanteenInventoryRecordsItemEntityList.stream(). filter(CanteenInventoryRecordsItemEntity -> CanteenInventoryRecordsItemEntity.getId() != null).collect(Collectors.toList()); @@ -146,8 +148,6 @@ public class CanteenInventoryRecordsServiceImpl extends ServiceImpl existingCodeIds = canteenInventoryRecordsItemMapper.selectList( new LambdaQueryWrapper() @@ -165,6 +165,8 @@ public class CanteenInventoryRecordsServiceImpl extends ServiceImpl !submittedCodeIds.contains(id)) .collect(Collectors.toList()); + canteenInventoryRecordsItemMapper.updateById(updateItems); + canteenInventoryRecordsItemMapper.insert(insertItems); // 批量删除失效 if (!toDeleteCodeIds.isEmpty()) { canteenInventoryRecordsItemMapper.deleteByIds(toDeleteCodeIds); diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpSpuEntity.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpSpuEntity.java index c8818225b..433f87c5b 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpSpuEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpSpuEntity.java @@ -109,7 +109,7 @@ public class SmErpSpuEntity extends Model { @Schema(description="成本单价,单位: 分") // @JsonSerialize(using = MoneySerializer.class) // 分 -> 元 // @JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分 - private Integer costPrice; + private Double costPrice; /** * 库存 diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/sm/smspu/SmErpCostPriceVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/sm/smspu/SmErpCostPriceVo.java new file mode 100644 index 000000000..2a794a64d --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/sm/smspu/SmErpCostPriceVo.java @@ -0,0 +1,21 @@ +package com.bsd.pjcloud.supermarket.vo.sm.smspu; + +import lombok.Data; + +@Data +public class SmErpCostPriceVo { + + private Long erpSpuId; + + private Double quantity; + + private Integer realPrice; + + private String inventoryType; + + private Integer packageNum; + + private String unit; + + private Integer totalAmount; +} diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpInventoryRecordsItemMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpInventoryRecordsItemMapper.java index e7210f517..773e8cb9a 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpInventoryRecordsItemMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpInventoryRecordsItemMapper.java @@ -6,9 +6,13 @@ import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryDetailQueryDTO; import com.bsd.pjcloud.supermarket.entity.SmErpInventoryRecordsItemEntity; import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordSumVo; +import com.bsd.pjcloud.supermarket.vo.sm.smspu.SmErpCostPriceVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; +import java.util.Map; + @Mapper public interface SmErpInventoryRecordsItemMapper extends PjcloudBaseMapper { @@ -21,4 +25,8 @@ public interface SmErpInventoryRecordsItemMapper extends PjcloudBaseMapper selectInventoryTypeSumPageByScope(Page page, @Param("inventoryDetailQueryDTO") InventoryDetailQueryDTO inventoryDetailQueryDTO, DataScope of); + + + + List getRecordsItemListBySpuIdsAndInventoryType(@Param("currentSpuIds")List currentSpuIds); } \ No newline at end of file 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 e93dd440b..d6d7daffe 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 @@ -18,6 +18,7 @@ import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; import com.bsd.pjcloud.flow.task.dto.TaskDto; import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto; import com.bsd.pjcloud.flow.task.entity.Process; +import com.bsd.pjcloud.supermarket.constant.InventoryTypeEnum; import com.bsd.pjcloud.supermarket.constant.OrderTypeEnum; import com.bsd.pjcloud.supermarket.constant.SupermarketFlowConstant; import com.bsd.pjcloud.supermarket.dto.cgdd.SmCgDDSaveItemDTO; @@ -30,6 +31,7 @@ import com.bsd.pjcloud.supermarket.vo.cgplan.ErpUnitVo; import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanItemVo; import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo; import com.bsd.pjcloud.supermarket.vo.inventoryrecord.*; +import com.bsd.pjcloud.supermarket.vo.sm.smspu.SmErpCostPriceVo; import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -38,6 +40,7 @@ import org.springframework.util.CollectionUtils; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.DoubleStream; import java.util.stream.IntStream; /** @@ -127,7 +130,7 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl currentSpuIds = cgPlanItemEntities.stream() + .map(SmErpInventoryRecordsItemEntity::getErpSpuId) + .collect(Collectors.toList()); + + List itemEntityList = smErpInventoryRecordsItemMapper.getRecordsItemListBySpuIdsAndInventoryType( + currentSpuIds + ); + Map> costPriceMap = itemEntityList.stream() + .collect(Collectors.groupingBy(SmErpCostPriceVo::getErpSpuId)); + + // 计算并更新成本价 + cgPlanItemEntities.forEach(item -> { + Long erpSpuId = item.getErpSpuId(); + List smErpInventoryRecordsItemEntityList = costPriceMap.get(erpSpuId); + Double totalNum = smErpInventoryRecordsItemEntityList.stream().filter(Objects::nonNull).mapToDouble(itemEntity -> itemEntity.getPackageNum() * itemEntity.getQuantity()).sum(); + + int totalRealRrice = smErpInventoryRecordsItemEntityList.stream().filter(Objects::nonNull).mapToInt(SmErpCostPriceVo::getTotalAmount).sum(); + double costPrice = (totalRealRrice / 100) / totalNum; + + SmErpSpuEntity smErpSpuEntity = new SmErpSpuEntity(); + smErpSpuEntity.setCostPrice(costPrice); + smErpSpuEntity.setId(erpSpuId); + // 更新库存成本价 + smErpSpuMapper.updateById(smErpSpuEntity); + }); + } return insert; } diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsItemMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsItemMapper.xml index 5a2470bfe..599f9225d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsItemMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsItemMapper.xml @@ -37,4 +37,20 @@ GROUP BY erp_spu_id + \ No newline at end of file