|
@@ -0,0 +1,91 @@
|
|
|
+package com.sd.business.service.production.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
+import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
|
+import com.sd.business.entity.order.po.OrderInfo;
|
|
|
+import com.sd.business.entity.production.dto.ProductionOrderDto;
|
|
|
+import com.sd.business.entity.production.dto.SetTagDto;
|
|
|
+import com.sd.business.entity.production.po.ProductionTask;
|
|
|
+import com.sd.business.entity.production.vo.ProductionOrderScheduleVo;
|
|
|
+import com.sd.business.entity.production.vo.ProductionOrderVo;
|
|
|
+import com.sd.business.mapper.production.ProductionOrderMapper;
|
|
|
+import com.sd.business.service.order.OrderService;
|
|
|
+import com.sd.business.service.production.ProductionOrderService;
|
|
|
+import com.sd.business.service.production.ProductionTaskService;
|
|
|
+import com.sd.business.service.sku.SkuService;
|
|
|
+import com.sd.business.service.sku.SkuSpecService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class ProductionOrderServiceImpl implements ProductionOrderService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ProductionOrderMapper productionOrderMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProductionTaskService productionTaskService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SkuSpecService skuSpecService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SkuService skuService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderService orderService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<ProductionOrderVo> getPage(ProductionOrderDto dto) {
|
|
|
+
|
|
|
+ IWrapper<ProductionOrderVo> wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.gt("oi", OrderInfo::getStatus, OrderStatusEnum.STOCK_PREPARATION.getKey());
|
|
|
+ wrapper.like("oi", OrderInfo::getCode, dto.getCode());
|
|
|
+ wrapper.like("oi", OrderInfo::getWlnCode, dto.getWlnCode());
|
|
|
+ wrapper.eq("oi", OrderInfo::getDepartmentId, dto.getDepartmentId());
|
|
|
+ wrapper.in("oi", OrderInfo::getTag, dto.getTagList());
|
|
|
+
|
|
|
+ Page<ProductionOrderVo> page = productionOrderMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<ProductionOrderVo> records = page.getRecords();
|
|
|
+ if (records.size() == 0) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Long> orderIdList = records.stream().map(ProductionOrderVo::getOrderId).collect(Collectors.toList());
|
|
|
+ List<ProductionTask> productionTaskList = productionTaskService.listByIds(orderIdList);
|
|
|
+
|
|
|
+ List<ProductionOrderScheduleVo> productionOrderScheduleVoList = productionTaskList.stream().map(item ->
|
|
|
+ ProductionOrderScheduleVo.builder()
|
|
|
+ .skuSpecId(item.getSkuSpecId())
|
|
|
+ .productionQuantity(item.getProductionQuantity())
|
|
|
+ .completeQuantity(item.getCompleteQuantity())
|
|
|
+ .build())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ skuSpecService.attributeAssign(productionOrderScheduleVoList, ProductionOrderScheduleVo::getSkuSpecId,
|
|
|
+ (item, skuSpec) -> {
|
|
|
+ item.setSkuId(skuSpec.getSkuId());
|
|
|
+ item.setSkuSpecCode(skuSpec.getCode());
|
|
|
+ item.setSkuSpecName(skuSpec.getName());
|
|
|
+ });
|
|
|
+
|
|
|
+ skuService.attributeAssign(productionOrderScheduleVoList, ProductionOrderScheduleVo::getSkuId,
|
|
|
+ (item, sku) -> {
|
|
|
+ item.setSkuName(sku.getName());
|
|
|
+ });
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setTag(SetTagDto dto) {
|
|
|
+ orderService.update(q -> q.in(BaseIdPo::getId, dto.getOrderIdList()).set(OrderInfo::getTag, dto.getTag()));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|