|
@@ -5,7 +5,10 @@ import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.sd.business.entity.board.dto.TurnoverRateBoardSelectDto;
|
|
|
import com.sd.business.entity.board.vo.TurnoverRateStatisticsVo;
|
|
|
+import com.sd.business.entity.bom.po.BomClassify;
|
|
|
+import com.sd.business.entity.bom.po.BomSpec;
|
|
|
import com.sd.business.entity.department.constant.DepartmentConstant;
|
|
|
import com.sd.business.entity.inventory.po.InventoryBackup;
|
|
|
import com.sd.business.entity.order.enums.OrderClassifyEnum;
|
|
@@ -28,6 +31,8 @@ import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static java.util.Comparator.comparing;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 订单销售出库统计 服务实现类
|
|
@@ -49,21 +54,29 @@ public class OrderSalesShipmentStatisticsServiceImpl extends ServiceImpl<OrderSa
|
|
|
private InventoryBackupService inventoryBackupService;
|
|
|
|
|
|
@Override
|
|
|
- public List<OrderSalesShipmentStatisticsVo> getSalesShipmentStatisticsByDate(Date beginDate, Date endDate) {
|
|
|
+ public List<OrderSalesShipmentStatisticsVo> getSalesShipmentStatisticsByDate(TurnoverRateBoardSelectDto dto) {
|
|
|
IWrapper<OrderSalesShipmentStatistics> wrapper = getWrapper();
|
|
|
wrapper.orderByDesc("osss", OrderSalesShipmentStatistics::getId);
|
|
|
- wrapper.between("osss", OrderSalesShipmentStatistics::getTotalDate, beginDate, endDate);
|
|
|
+ wrapper.between("osss", OrderSalesShipmentStatistics::getTotalDate, dto.getBeginDate(), dto.getEndDate());
|
|
|
+ if ("1".equals(dto.getBomClassify())) {
|
|
|
+ wrapper.in("bc", BomClassify::getCode, Arrays.asList("201.G","203.G"));
|
|
|
+ } else {
|
|
|
+ wrapper.eq("bc", BomClassify::getCode,"202.G");
|
|
|
+ }
|
|
|
+ wrapper.ne("bs", BomSpec::getCode, "1010000007");
|
|
|
wrapper.groupBy("osss.bom_spec_id");
|
|
|
return this.baseMapper.getSalesShipmentStatisticsList(wrapper);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<TurnoverRateStatisticsVo> getTurnoverRateStatisticsList() {
|
|
|
+ public List<TurnoverRateStatisticsVo> getTurnoverRateStatisticsList(TurnoverRateBoardSelectDto dto) {
|
|
|
// 查询90天的周转率
|
|
|
Date date = new Date();
|
|
|
Date beginDate = DateUtil.beginOfDay(DateUtil.offsetDay(date, -90));
|
|
|
Date endDate = DateUtil.beginOfDay(DateUtil.offsetDay(date, -1));
|
|
|
- List<OrderSalesShipmentStatisticsVo> statisticsVoList = this.getSalesShipmentStatisticsByDate(beginDate, date);
|
|
|
+ dto.setBeginDate(beginDate);
|
|
|
+ dto.setEndDate(endDate);
|
|
|
+ List<OrderSalesShipmentStatisticsVo> statisticsVoList = this.getSalesShipmentStatisticsByDate(dto);
|
|
|
if (ObjectUtil.isEmpty(statisticsVoList)) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
@@ -114,12 +127,18 @@ public class OrderSalesShipmentStatisticsServiceImpl extends ServiceImpl<OrderSa
|
|
|
.divide(item.getQuantity(), 4, RoundingMode.HALF_UP),
|
|
|
4, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
+ if (ObjectUtil.equals(endQuantity, BigDecimal.ZERO) && ObjectUtil.equals(turnoverRate, BigDecimal.ZERO)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
TurnoverRateStatisticsVo vo = new TurnoverRateStatisticsVo();
|
|
|
vo.setBomSpecCode(item.getBomSpecCode());
|
|
|
vo.setBomSpecName(item.getBomSpecName());
|
|
|
vo.setTurnoverRate(turnoverRate);
|
|
|
+ vo.setQuantity(endQuantity);
|
|
|
return vo;
|
|
|
- }).collect(Collectors.toList());
|
|
|
+ }).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ // 按照周转率升序
|
|
|
+ list.sort(comparing(TurnoverRateStatisticsVo::getTurnoverRate));
|
|
|
return list;
|
|
|
}
|
|
|
|
|
@@ -130,15 +149,14 @@ public class OrderSalesShipmentStatisticsServiceImpl extends ServiceImpl<OrderSa
|
|
|
List<OrderInfo> list = orderService.list(q -> q
|
|
|
.eq(OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
|
|
|
.ne(OrderInfo::getClassify, OrderClassifyEnum.OUTSOURCE_ORDER.getKey())
|
|
|
- .likeLeft(OrderInfo::getShippingTime, date)
|
|
|
+ .likeRight(OrderInfo::getShippingTime, date)
|
|
|
.select(BaseIdPo::getId));
|
|
|
if (list.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
List<Long> orderIds = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
- Map<Long, BigDecimal> map = orderSkuService.mapKV(OrderSku::getBomSpecId,
|
|
|
- OrderSku::getQuantity,
|
|
|
- q -> q.in(OrderSku::getOrderId, orderIds));
|
|
|
+ List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIds));
|
|
|
+ Map<Long, BigDecimal> map = orderSkuList.stream().collect(Collectors.toMap(OrderSku::getBomSpecId, OrderSku::getQuantity, BigDecimal::add));
|
|
|
List<OrderSalesShipmentStatistics> statisticsDtoList = map.keySet().stream().map(item -> {
|
|
|
OrderSalesShipmentStatistics dto = new OrderSalesShipmentStatistics();
|
|
|
dto.setTotalDate(yesterday);
|