24282 1 year ago
parent
commit
7fa93fce01

+ 45 - 0
sd-business/src/main/java/com/sd/business/entity/work/vo/OpenSeaWorkOrderVo.java

@@ -0,0 +1,45 @@
+package com.sd.business.entity.work.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class OpenSeaWorkOrderVo {
+
+    /**
+     * 订单id
+     */
+    private Long orderInfoId;
+
+    /**
+     * 订单sku Id
+     */
+    private Long orderSkuId;
+
+    /**
+     * 订单号
+     */
+    private String orderCode;
+
+    /**
+     * 订单万里牛号
+     */
+    private String orderWlnCode;
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * sku规格编号
+     */
+    private String skuSpecCode;
+
+    /**
+     * sku规格名称
+     */
+    private String skuSpecName;
+
+}

+ 20 - 0
sd-business/src/main/java/com/sd/business/entity/work/vo/WorkOrderDetailVo.java

@@ -14,4 +14,24 @@ import lombok.Setter;
 @Setter
 public class WorkOrderDetailVo extends WorkOrderDetail {
 
+    /**
+     * 订单号
+     */
+    private String orderCode;
+
+    /**
+     * 订单万里牛号
+     */
+    private String orderWlnCode;
+
+    /**
+     * sku规格编号
+     */
+    private String skuSpecCode;
+
+    /**
+     * sku规格名称
+     */
+    private String skuSpecName;
+
 }

+ 12 - 0
sd-business/src/main/java/com/sd/business/entity/work/vo/WorkOrderVo.java

@@ -4,6 +4,8 @@ import com.sd.business.entity.work.po.WorkOrder;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 生产工单列表查询返回值实体
  *
@@ -34,4 +36,14 @@ public class WorkOrderVo extends WorkOrder {
      */
     private String printingPaperBomSpecName;
 
+    /**
+     * 工单详情
+     */
+    List<WorkOrderDetailVo> workOrderDetailList;
+
+    /**
+     * 公海工单
+     */
+    List<OpenSeaWorkOrderVo> openSeaWorkOrderList;
+
 }

+ 75 - 2
sd-business/src/main/java/com/sd/business/service/work/impl/WorkOrderServiceImpl.java

@@ -9,6 +9,8 @@ import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
 import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.order.enums.OrderExceptionTypeEnum;
+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.entity.work.constant.MaterialsConstant;
@@ -16,9 +18,12 @@ import com.sd.business.entity.work.dto.WorkOrderSelectDto;
 import com.sd.business.entity.work.enums.WorkOrderFixationSpecEnum;
 import com.sd.business.entity.work.po.WorkOrder;
 import com.sd.business.entity.work.po.WorkOrderDetail;
+import com.sd.business.entity.work.vo.OpenSeaWorkOrderVo;
+import com.sd.business.entity.work.vo.WorkOrderDetailVo;
 import com.sd.business.entity.work.vo.WorkOrderVo;
 import com.sd.business.mapper.work.WorkOrderMapper;
 import com.sd.business.service.bom.BomSpecService;
+import com.sd.business.service.order.OrderInfoService;
 import com.sd.business.service.order.OrderSkuService;
 import com.sd.business.service.sku.SkuSpecService;
 import com.sd.business.service.work.WorkOrderDetailService;
@@ -67,6 +72,9 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
     private SkuSpecService skuSpecService;
 
     @Autowired
+    private OrderInfoService orderInfoService;
+
+    @Autowired
     private OrderSkuService orderSkuService;
 
     @Autowired
@@ -126,6 +134,36 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
 
         Assert.notNull(vo, "未知数据");
 
+        // 排版信息
+        List<WorkOrderDetailVo> workOrderDetailList = Sql.create(WorkOrderDetailVo.class)
+                .selectAll(WorkOrderDetail.class)
+                .selectAs(OrderInfo::getCode, WorkOrderDetailVo::getOrderCode)
+                .selectAs(OrderInfo::getWlnCode, WorkOrderDetailVo::getOrderWlnCode)
+                .selectAs(SkuSpec::getCode, WorkOrderDetailVo::getSkuSpecCode)
+                .selectAs(SkuSpec::getName, WorkOrderDetailVo::getSkuSpecName)
+                .from(WorkOrderDetail.class)
+                .leftJoin(OrderInfo.class, WorkOrderDetail::getOrderInfoId)
+                .leftJoin(OrderSku.class, WorkOrderDetail::getOrderSkuId)
+                .leftJoin(SkuSpec.class, OrderSku::getSkuSpecId)
+
+                .eq(WorkOrderDetail::getWorkOrderId, id)
+                .list();
+
+        vo.setWorkOrderDetailList(workOrderDetailList);
+
+        // 公海订单
+        List<OrderSku> orderSkuList = getNotSchedulingSku(vo.getMasterBomSpecId(), vo.getPrintingPaperBomSpecId());
+        List<OpenSeaWorkOrderVo> openSeaWorkOrderList = getOpenSeaWorkOrderList(orderSkuList);
+        orderInfoService.attributeAssign(openSeaWorkOrderList, OpenSeaWorkOrderVo::getOrderInfoId, (item, orderInfo) -> {
+            item.setOrderCode(orderInfo.getCode());
+            item.setOrderWlnCode(orderInfo.getWlnCode());
+        });
+        skuSpecService.attributeAssign(openSeaWorkOrderList, OpenSeaWorkOrderVo::getSkuSpecId, (item, skuSpec) -> {
+            item.setSkuSpecCode(skuSpec.getCode());
+            item.setSkuSpecName(skuSpec.getName());
+        });
+        vo.setOpenSeaWorkOrderList(openSeaWorkOrderList);
+
         return vo;
     }
 
@@ -142,7 +180,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
 
     @Override
     public Integer notSchedulingSkuNum() {
-        List<OrderSku> orderSkuList = orderSkuService.list(q -> q.eq(OrderSku::getCompleteScheduling, StatusConstant.NO));
+        List<OrderSku> orderSkuList = getNotSchedulingSku(null, null);
         return orderSkuList.stream().mapToInt(item -> item.getQuantity().subtract(item.getSchedulingNum()).intValue()).sum();
     }
 
@@ -395,7 +433,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         try {
 
             // 查找未排版完成的订单sku
-            List<OrderSku> list = orderSkuService.list(q -> q.eq(OrderSku::getCompleteScheduling, StatusConstant.NO));
+            List<OrderSku> list = getNotSchedulingSku(null, null);
 
             if (list.isEmpty()) {
                 return;
@@ -424,6 +462,8 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
                 }
             }
 
+        } catch (ServiceException e) {
+            throw e;
         } catch (Exception e) {
             log.error("排版业务发生异常", e);
             throw new ServiceException("排版业务发生异常");
@@ -450,6 +490,39 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         return skuSpec;
     }
 
+    /**
+     * 获取未排版订单sku
+     */
+    private List<OrderSku> getNotSchedulingSku(Long bomSpecId, Long printingPaperBomSpecId) {
+        return Sql.create(OrderSku.class)
+                .selectAll(OrderSku.class)
+                .from(OrderInfo.class)
+                .innerJoin(OrderSku.class, OrderSku::getOrderId, OrderInfo::getId)
+                .eq(OrderInfo::getExceptionType, OrderExceptionTypeEnum.NORMAL)
+                .eq(OrderSku::getCompleteScheduling, StatusConstant.NO)
+                .eq(OrderSku::getBomSpecId, bomSpecId)
+                .eq(OrderSku::getPrintingPaperBomSpecId, printingPaperBomSpecId)
+                .list();
+    }
+
+    /**
+     * 获取公海工单
+     */
+    private List<OpenSeaWorkOrderVo> getOpenSeaWorkOrderList(List<OrderSku> orderSkuList) {
+        List<OpenSeaWorkOrderVo> openSeaWorkOrderList = new ArrayList<>();
+        for (OrderSku orderSku : orderSkuList) {
+            int number = orderSku.getQuantity().subtract(orderSku.getSchedulingNum()).intValue();
+            for (int i = 0; i < number; i++) {
+                OpenSeaWorkOrderVo openSeaWorkOrderVo = new OpenSeaWorkOrderVo();
+                openSeaWorkOrderVo.setOrderInfoId(orderSku.getOrderId());
+                openSeaWorkOrderVo.setOrderSkuId(orderSku.getId());
+                openSeaWorkOrderVo.setSkuSpecId(orderSku.getSkuSpecId());
+                openSeaWorkOrderList.add(openSeaWorkOrderVo);
+            }
+        }
+        return openSeaWorkOrderList;
+    }
+
     @FunctionalInterface
     private interface CommonSchedulingFunInterface {
         void run(Long bomSpecId, Long printingPaperBomSpecId, List<OrderSku> list, Map<Long, SkuSpec> skuSpecMap);