|
@@ -9,6 +9,8 @@ import com.ruoyi.common.constant.StatusConstant;
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.sd.business.entity.bom.po.BomSpec;
|
|
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.order.po.OrderSku;
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
import com.sd.business.entity.work.constant.MaterialsConstant;
|
|
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.enums.WorkOrderFixationSpecEnum;
|
|
import com.sd.business.entity.work.po.WorkOrder;
|
|
import com.sd.business.entity.work.po.WorkOrder;
|
|
import com.sd.business.entity.work.po.WorkOrderDetail;
|
|
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.entity.work.vo.WorkOrderVo;
|
|
import com.sd.business.mapper.work.WorkOrderMapper;
|
|
import com.sd.business.mapper.work.WorkOrderMapper;
|
|
import com.sd.business.service.bom.BomSpecService;
|
|
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.order.OrderSkuService;
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
import com.sd.business.service.work.WorkOrderDetailService;
|
|
import com.sd.business.service.work.WorkOrderDetailService;
|
|
@@ -67,6 +72,9 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
|
private SkuSpecService skuSpecService;
|
|
private SkuSpecService skuSpecService;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
+ private OrderInfoService orderInfoService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
private OrderSkuService orderSkuService;
|
|
private OrderSkuService orderSkuService;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
@@ -126,6 +134,36 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
|
|
|
|
|
Assert.notNull(vo, "未知数据");
|
|
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;
|
|
return vo;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -142,7 +180,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Integer notSchedulingSkuNum() {
|
|
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();
|
|
return orderSkuList.stream().mapToInt(item -> item.getQuantity().subtract(item.getSchedulingNum()).intValue()).sum();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -395,7 +433,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
|
try {
|
|
try {
|
|
|
|
|
|
// 查找未排版完成的订单sku
|
|
// 查找未排版完成的订单sku
|
|
- List<OrderSku> list = orderSkuService.list(q -> q.eq(OrderSku::getCompleteScheduling, StatusConstant.NO));
|
|
|
|
|
|
+ List<OrderSku> list = getNotSchedulingSku(null, null);
|
|
|
|
|
|
if (list.isEmpty()) {
|
|
if (list.isEmpty()) {
|
|
return;
|
|
return;
|
|
@@ -424,6 +462,8 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ } catch (ServiceException e) {
|
|
|
|
+ throw e;
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
log.error("排版业务发生异常", e);
|
|
log.error("排版业务发生异常", e);
|
|
throw new ServiceException("排版业务发生异常");
|
|
throw new ServiceException("排版业务发生异常");
|
|
@@ -450,6 +490,39 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
|
return skuSpec;
|
|
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
|
|
@FunctionalInterface
|
|
private interface CommonSchedulingFunInterface {
|
|
private interface CommonSchedulingFunInterface {
|
|
void run(Long bomSpecId, Long printingPaperBomSpecId, List<OrderSku> list, Map<Long, SkuSpec> skuSpecMap);
|
|
void run(Long bomSpecId, Long printingPaperBomSpecId, List<OrderSku> list, Map<Long, SkuSpec> skuSpecMap);
|