|
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ruoyi.common.constant.StatusConstant;
|
|
|
+import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.core.domain.BasePo;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
|
|
@@ -12,12 +13,15 @@ import com.sd.business.entity.inventory.po.InventoryFinished;
|
|
|
import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
|
|
|
import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
|
|
|
import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
|
|
|
+import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
|
+import com.sd.business.entity.order.po.OrderInfo;
|
|
|
import com.sd.business.entity.order.po.OrderSku;
|
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
|
import com.sd.business.mapper.inventory.InventoryFinishedMapper;
|
|
|
import com.sd.business.service.inventory.InventoryFinishedOrderDetailService;
|
|
|
import com.sd.business.service.inventory.InventoryFinishedOrderService;
|
|
|
import com.sd.business.service.inventory.InventoryFinishedService;
|
|
|
+import com.sd.business.service.order.OrderService;
|
|
|
import com.sd.business.service.order.OrderSkuService;
|
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
|
import com.sd.framework.util.excel.util.ExcelUtil;
|
|
@@ -30,6 +34,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -58,6 +63,9 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
|
|
|
@Autowired
|
|
|
private SkuSpecService skuSpecService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private OrderService orderService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<InventoryFinishedVo> getPage(InventoryFinishedSelectDto dto) {
|
|
|
IWrapper<InventoryFinished> wrapper = getWrapper();
|
|
@@ -115,8 +123,9 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
|
|
|
// 成品库存出库
|
|
|
outByFinishedOrder(list);
|
|
|
|
|
|
+ List<Long> inventoryFinishedOrderIds = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
// 删除成品仓库订单以及明细
|
|
|
- inventoryFinishedOrderService.removeByOrderId(orderId);
|
|
|
+ inventoryFinishedOrderService.removeByIds(inventoryFinishedOrderIds);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -381,26 +390,47 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
|
|
|
|
|
|
@Override
|
|
|
public List<InventoryFinishedVo> getTodayInStorageList() {
|
|
|
+ Date date = DateUtil.beginOfDay(new Date());
|
|
|
// 查询今日成品入库明细
|
|
|
List<InventoryFinishedOrderDetail> finishedOrderDetailList = inventoryFinishedOrderDetailService.list(q -> q
|
|
|
.eq(InventoryFinishedOrderDetail::getOperationType, 1)
|
|
|
.isNull(InventoryFinishedOrderDetail::getOrderInfoId)
|
|
|
- .ge(BasePo::getCreateTime, DateUtil.beginOfDay(new Date())));
|
|
|
+ .ge(BasePo::getCreateTime, date));
|
|
|
+
|
|
|
+ // 获取无理由订单
|
|
|
+ List<OrderInfo> orderInfoList = orderService.list(q -> q
|
|
|
+ .eq(OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
|
|
|
+ .ge(OrderInfo::getShippingTime, date));
|
|
|
+ List<Long> orderIds = orderInfoList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
+ List<InventoryFinishedOrder> inventoryFinishedOrderList = new ArrayList<>();
|
|
|
+ if (!orderIds.isEmpty()) {
|
|
|
+ inventoryFinishedOrderList = inventoryFinishedOrderService.list(q -> q
|
|
|
+ .in(InventoryFinishedOrder::getOrderInfoId, orderIds)
|
|
|
+ .eq(InventoryFinishedOrder::getStatus, StatusConstant.YES));
|
|
|
+ }
|
|
|
|
|
|
- // 合并重复sku
|
|
|
- Map<Long, InventoryFinishedVo> inventoryFinishedVoMap = finishedOrderDetailList.stream().collect(Collectors.toMap(
|
|
|
- InventoryFinishedOrderDetail::getSkuSpecId,
|
|
|
- item -> {
|
|
|
+ Map<Long, InventoryFinishedVo> inventoryFinishedVoMap = Stream.concat(
|
|
|
+ finishedOrderDetailList.stream().map(item -> {
|
|
|
+ InventoryFinishedVo vo = new InventoryFinishedVo();
|
|
|
+ vo.setSkuSpecId(item.getSkuSpecId());
|
|
|
+ vo.setQuantity(item.getQuantity());
|
|
|
+ return vo;
|
|
|
+ }),
|
|
|
+ inventoryFinishedOrderList.stream().map(item -> {
|
|
|
InventoryFinishedVo vo = new InventoryFinishedVo();
|
|
|
vo.setSkuSpecId(item.getSkuSpecId());
|
|
|
vo.setQuantity(item.getQuantity());
|
|
|
return vo;
|
|
|
- },
|
|
|
+ })
|
|
|
+ ).collect(Collectors.toMap(
|
|
|
+ InventoryFinishedVo::getSkuSpecId,
|
|
|
+ Function.identity(),
|
|
|
(v1, v2) -> {
|
|
|
v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
|
|
|
return v1;
|
|
|
})
|
|
|
);
|
|
|
+
|
|
|
List<InventoryFinishedVo> list = new ArrayList<>(inventoryFinishedVoMap.values());
|
|
|
// 赋值sku品号品名
|
|
|
skuSpecService.attributeAssign(list, InventoryFinishedVo::getSkuSpecId, (item, skuSpec) -> {
|