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