|
@@ -1,10 +1,12 @@
|
|
package com.sd.business.service.production.impl;
|
|
package com.sd.business.service.production.impl;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
|
+import com.sd.business.entity.artwork.po.ArtworkLibrary;
|
|
import com.sd.business.entity.bom.po.BomSpec;
|
|
import com.sd.business.entity.bom.po.BomSpec;
|
|
import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
import com.sd.business.entity.order.po.OrderInfo;
|
|
import com.sd.business.entity.order.po.OrderInfo;
|
|
@@ -15,20 +17,22 @@ import com.sd.business.entity.production.vo.ProductionOrderScheduleVo;
|
|
import com.sd.business.entity.production.vo.ProductionWorkOrderVo;
|
|
import com.sd.business.entity.production.vo.ProductionWorkOrderVo;
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
import com.sd.business.mapper.production.ProductionWorkOrderMapper;
|
|
import com.sd.business.mapper.production.ProductionWorkOrderMapper;
|
|
|
|
+import com.sd.business.service.artwork.ArtworkLibraryService;
|
|
import com.sd.business.service.order.OrderService;
|
|
import com.sd.business.service.order.OrderService;
|
|
import com.sd.business.service.order.OrderSkuService;
|
|
import com.sd.business.service.order.OrderSkuService;
|
|
import com.sd.business.service.production.ProductionWorkOrderService;
|
|
import com.sd.business.service.production.ProductionWorkOrderService;
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
|
|
+import com.sd.mq.config.WorkOrderConfig;
|
|
|
|
+import com.sd.mq.entity.WorkOrderDetail;
|
|
|
|
+import com.sd.mq.entity.WorkOrderMessage;
|
|
import com.sd.mq.enums.WorkOrderStatusEnum;
|
|
import com.sd.mq.enums.WorkOrderStatusEnum;
|
|
|
|
+import com.sd.mq.util.RabbitMqUtil;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.Collections;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
+import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -51,6 +55,9 @@ public class ProductionWorkOrderServiceImpl extends ServiceImpl<ProductionWorkOr
|
|
@Autowired
|
|
@Autowired
|
|
private SkuSpecService skuSpecService;
|
|
private SkuSpecService skuSpecService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ArtworkLibraryService artworkLibraryService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Page<ProductionWorkOrderVo> getPage(ProductionWorkOrderSelectDto dto) {
|
|
public Page<ProductionWorkOrderVo> getPage(ProductionWorkOrderSelectDto dto) {
|
|
IWrapper<ProductionWorkOrder> wrapper = getWrapper();
|
|
IWrapper<ProductionWorkOrder> wrapper = getWrapper();
|
|
@@ -126,6 +133,82 @@ public class ProductionWorkOrderServiceImpl extends ServiceImpl<ProductionWorkOr
|
|
});
|
|
});
|
|
|
|
|
|
saveBatch(productionWorkOrderList);
|
|
saveBatch(productionWorkOrderList);
|
|
|
|
+
|
|
|
|
+ sendMq(productionWorkOrderList);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void sendMq(List<ProductionWorkOrder> list) {
|
|
|
|
+ if (list.isEmpty()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 订单详情
|
|
|
|
+ List<Long> orderSkuIdList = list.stream().map(ProductionWorkOrder::getOrderSkuId).collect(Collectors.toList());
|
|
|
|
+ Map<Long, OrderSku> orderSkuMap = orderSkuService.byIdsToMap(orderSkuIdList);
|
|
|
|
+
|
|
|
|
+ // 图稿库
|
|
|
|
+ List<Long> artworkLibraryIdList = orderSkuMap.values().stream()
|
|
|
|
+ .map(OrderSku::getArtworkLibraryId)
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
+ .filter(item -> item != 0)
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ Map<Long, ArtworkLibrary> artworkLibraryMap;
|
|
|
|
+ if (artworkLibraryIdList.isEmpty()) {
|
|
|
|
+ artworkLibraryMap = Collections.emptyMap();
|
|
|
|
+ } else {
|
|
|
|
+ artworkLibraryMap = artworkLibraryService.byIdsToMap(artworkLibraryIdList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // sku规格
|
|
|
|
+ List<Long> skuSpecIdList = list.stream().map(ProductionWorkOrder::getSkuSpecId).collect(Collectors.toList());
|
|
|
|
+ Map<Long, SkuSpec> skuSpecMap = skuSpecService.byIdsToMap(skuSpecIdList);
|
|
|
|
+
|
|
|
|
+ List<WorkOrderDetail> workOrderDetailList = list.stream().map(item -> {
|
|
|
|
+ WorkOrderDetail workOrderDetail = new WorkOrderDetail();
|
|
|
|
+
|
|
|
|
+ workOrderDetail.setWorkOrderId(item.getId());
|
|
|
|
+
|
|
|
|
+ Long orderSkuId = item.getOrderSkuId();
|
|
|
|
+ OrderSku orderSku = orderSkuMap.get(orderSkuId);
|
|
|
|
+ Long artworkLibraryId = orderSku.getArtworkLibraryId();
|
|
|
|
+
|
|
|
|
+ if (artworkLibraryId != null && artworkLibraryId != 0) {
|
|
|
|
+ ArtworkLibrary artworkLibrary = artworkLibraryMap.get(artworkLibraryId);
|
|
|
|
+ if (artworkLibrary != null) {
|
|
|
|
+ workOrderDetail.setImgPath(artworkLibrary.getArtworkName() + "\\" + artworkLibrary.getImgName());
|
|
|
|
+ workOrderDetail.setFilePath(artworkLibrary.getArtworkName() + "\\" + artworkLibrary.getFileName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (StrUtil.isAllNotBlank(workOrderDetail.getImgPath(), workOrderDetail.getFilePath())) {
|
|
|
|
+ workOrderDetail.setImgPath(orderSku.getBlueprint().replace("https://os.winfaster.cn/sd/", "")
|
|
|
|
+ .replace("test/", "")
|
|
|
|
+ .replace("prod/", "")
|
|
|
|
+ .replace("dev/", ""));
|
|
|
|
+ workOrderDetail.setFilePath(orderSku.getProductionDocument().replace("https://os.winfaster.cn/sd/", "")
|
|
|
|
+ .replace("test/", "")
|
|
|
|
+ .replace("prod/", "")
|
|
|
|
+ .replace("dev/", ""));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ SkuSpec skuSpec = skuSpecMap.get(item.getSkuSpecId());
|
|
|
|
+
|
|
|
|
+ workOrderDetail.setLength(skuSpec.getLength());
|
|
|
|
+ workOrderDetail.setWide(skuSpec.getWidth());
|
|
|
|
+ workOrderDetail.setHight(skuSpec.getHeight());
|
|
|
|
+
|
|
|
|
+ return workOrderDetail;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ WorkOrderMessage workOrderMessage = new WorkOrderMessage();
|
|
|
|
+ workOrderMessage.setWorkOrderDetailList(workOrderDetailList);
|
|
|
|
+
|
|
|
|
+ RabbitMqUtil.send(WorkOrderConfig.DIRECT_EXCHANGE_NAME, WorkOrderConfig.ADD_WORK_ORDER_QUEUE_NAME, workOrderMessage);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|