package cn.iocoder.yudao.module.mes.service.wm.statistics;
|
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
import cn.iocoder.yudao.module.mes.controller.admin.wm.statistics.vo.MesWmOutboundSummaryRespVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.wm.statistics.vo.MesWmSortSummaryRespVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesItemStatisticsDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.sorting.MesWmSortWarehouseStatisticsDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
|
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper;
|
import cn.iocoder.yudao.module.mes.dal.mysql.wm.sorting.MesWmSortTaskMapper;
|
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
|
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
|
import jakarta.annotation.Resource;
|
import org.springframework.stereotype.Service;
|
import org.springframework.validation.annotation.Validated;
|
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* MES 销售出库统计 Service 实现类
|
*
|
* @author 超级管理员
|
*/
|
@Service
|
@Validated
|
public class MesWmSalesStatisticsServiceImpl implements MesWmSalesStatisticsService {
|
|
@Resource
|
private MesWmSortTaskMapper sortTaskMapper;
|
@Resource
|
private MesWmProductSalesLineMapper productSalesLineMapper;
|
@Resource
|
private MesWmWarehouseService warehouseService;
|
@Resource
|
private MesMdmItemService mdmItemService;
|
|
@Override
|
public List<MesWmSortSummaryRespVO> getSortSummary(Long warehouseId, LocalDateTime beginTime, LocalDateTime endTime) {
|
List<MesWmSortWarehouseStatisticsDO> statisticsList =
|
sortTaskMapper.selectWarehouseStatistics(warehouseId, beginTime, endTime);
|
if (CollectionUtils.isAnyEmpty(statisticsList)) {
|
return new ArrayList<>();
|
}
|
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
|
CollectionUtils.convertSet(statisticsList, MesWmSortWarehouseStatisticsDO::getWarehouseId));
|
List<MesWmSortSummaryRespVO> result = new ArrayList<>(statisticsList.size());
|
for (MesWmSortWarehouseStatisticsDO statistics : statisticsList) {
|
MesWmWarehouseDO warehouse = warehouseMap.get(statistics.getWarehouseId());
|
MesWmSortSummaryRespVO vo = new MesWmSortSummaryRespVO();
|
vo.setWarehouseId(statistics.getWarehouseId());
|
vo.setWarehouseName(warehouse != null ? warehouse.getName()
|
: "仓库(ID=" + statistics.getWarehouseId() + ")");
|
vo.setTaskCount(statistics.getTaskCount());
|
vo.setPlanQuantity(statistics.getPlanQuantity());
|
vo.setSortedQuantity(statistics.getSortedQuantity());
|
result.add(vo);
|
}
|
return result;
|
}
|
|
@Override
|
public List<MesWmOutboundSummaryRespVO> getOutboundSummary(Long itemId, LocalDateTime beginTime, LocalDateTime endTime) {
|
List<MesWmProductSalesItemStatisticsDO> statisticsList =
|
productSalesLineMapper.selectItemStatistics(itemId, beginTime, endTime);
|
if (CollectionUtils.isAnyEmpty(statisticsList)) {
|
return new ArrayList<>();
|
}
|
Map<Long, MesMdmItemDO> itemMap = mdmItemService.getItemMap(
|
CollectionUtils.convertSet(statisticsList, MesWmProductSalesItemStatisticsDO::getItemId));
|
List<MesWmOutboundSummaryRespVO> result = new ArrayList<>(statisticsList.size());
|
for (MesWmProductSalesItemStatisticsDO statistics : statisticsList) {
|
MesMdmItemDO item = itemMap.get(statistics.getItemId());
|
MesWmOutboundSummaryRespVO vo = new MesWmOutboundSummaryRespVO();
|
vo.setItemId(statistics.getItemId());
|
vo.setItemCode(item != null ? item.getCode() : null);
|
vo.setItemName(item != null ? item.getName() : "物料(ID=" + statistics.getItemId() + ")");
|
vo.setSalesCount(statistics.getSalesCount());
|
vo.setQuantity(statistics.getQuantity());
|
result.add(vo);
|
}
|
return result;
|
}
|
|
}
|