|
@@ -1,6 +1,7 @@
|
|
|
package com.sd.business.service.production.impl;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Assert;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.ruoyi.common.constant.StatusConstant;
|
|
@@ -25,6 +26,7 @@ import com.sd.business.entity.production.po.ProductionTask;
|
|
|
import com.sd.business.entity.production.po.ProductionWorkOrder;
|
|
|
import com.sd.business.entity.production.vo.PackageBomVo;
|
|
|
import com.sd.business.entity.production.vo.StockPreparationVo;
|
|
|
+import com.sd.business.entity.production.vo.UncompletedVo;
|
|
|
import com.sd.business.entity.sku.po.Sku;
|
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
|
import com.sd.business.entity.warehouse.constant.WarehouseConstant;
|
|
@@ -92,17 +94,75 @@ public class StockPreparationServiceImpl implements StockPreparationService {
|
|
|
private BomClassifyService bomClassifyService;
|
|
|
|
|
|
@Override
|
|
|
- public List<StockPreparationVo> uncompletedList(StockPreparationDto dto) {
|
|
|
- IWrapper<StockPreparationVo> wrapper = createWrapper(dto);
|
|
|
+ public List<UncompletedVo> uncompletedList(StockPreparationDto dto) {
|
|
|
+ Assert.notNull(dto.getDepartmentId(), "事业部id不能为空");
|
|
|
+
|
|
|
+ IWrapper<StockPreparationVo> wrapper = IWrapper.getWrapper();
|
|
|
wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.STOCK_PREPARATION.getKey());
|
|
|
- wrapper.eq("os", OrderSku::getStockPreparationStatus, StatusConstant.NO);
|
|
|
wrapper.eq("oi", OrderInfo::getExceptionType, OrderExceptionTypeEnum.NORMAL.getKey().toString());
|
|
|
- return stockPreparationMapper.uncompletedList(wrapper);
|
|
|
+ wrapper.eq("os", OrderSku::getStockPreparationStatus, StatusConstant.NO);
|
|
|
+ wrapper.eq("oi", OrderInfo::getDepartmentId, dto.getDepartmentId());
|
|
|
+ wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
|
|
|
+ wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
|
|
|
+ wrapper.eq("ss", SkuSpec::getCode, dto.getSkuSpecCode());
|
|
|
+ wrapper.eq("ss", SkuSpec::getName, dto.getSkuSpecName());
|
|
|
+ List<StockPreparationVo> stockPreparationVoList = stockPreparationMapper.uncompletedList(wrapper);
|
|
|
+
|
|
|
+ return new ArrayList<>(stockPreparationVoList.stream().collect(Collectors.toMap(
|
|
|
+ StockPreparationVo::getBomSpecId,
|
|
|
+ item -> {
|
|
|
+ UncompletedVo uncompletedVo = new UncompletedVo();
|
|
|
+ uncompletedVo.setBomSpecId(item.getBomSpecId());
|
|
|
+ uncompletedVo.setBomSpecCode(item.getBomSpecCode());
|
|
|
+ uncompletedVo.setBomSpecName(item.getBomSpecName());
|
|
|
+ uncompletedVo.setTotalQuantity(item.getQuantity());
|
|
|
+
|
|
|
+ UncompletedVo.SkuInfo skuInfo = new UncompletedVo.SkuInfo();
|
|
|
+ skuInfo.setSkuSpecId(item.getSkuSpecId());
|
|
|
+ skuInfo.setSkuSpecCode(item.getSkuSpecCode());
|
|
|
+ skuInfo.setSkuSpecName(item.getSkuSpecName());
|
|
|
+ skuInfo.setQuantity(item.getQuantity());
|
|
|
+
|
|
|
+ List<UncompletedVo.SkuInfo> skuInfoList = new ArrayList<>();
|
|
|
+ skuInfoList.add(skuInfo);
|
|
|
+
|
|
|
+ uncompletedVo.setSkuInfoList(skuInfoList);
|
|
|
+
|
|
|
+ return uncompletedVo;
|
|
|
+ },
|
|
|
+ (v1, v2) -> {
|
|
|
+ v1.setTotalQuantity(v1.getTotalQuantity().add(v2.getTotalQuantity()));
|
|
|
+ UncompletedVo.SkuInfo skuInfo = v2.getSkuInfoList().get(0);
|
|
|
+ boolean flag = true;
|
|
|
+ for (UncompletedVo.SkuInfo temp : v1.getSkuInfoList()) {
|
|
|
+ if (Objects.equals(temp.getSkuSpecId(), skuInfo.getSkuSpecId())) {
|
|
|
+ temp.setQuantity(temp.getQuantity().add(skuInfo.getQuantity()));
|
|
|
+ flag = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (flag) {
|
|
|
+ v1.getSkuInfoList().add(skuInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ return v1;
|
|
|
+ }
|
|
|
+ )).values());
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Page<StockPreparationVo> completedPage(StockPreparationDto dto) {
|
|
|
- IWrapper<StockPreparationVo> wrapper = createWrapper(dto);
|
|
|
+ IWrapper<StockPreparationVo> wrapper = IWrapper.getWrapper();
|
|
|
+ wrapper.eq("oi", OrderInfo::getCode, dto.getOrderCode());
|
|
|
+ wrapper.eq("oi", OrderInfo::getWlnCode, dto.getOrderWlnCode());
|
|
|
+ wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
|
|
|
+ wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
|
|
|
+ wrapper.eq("d", Department::getId, dto.getDepartmentId());
|
|
|
+ wrapper.eq("ss", SkuSpec::getCode, dto.getSkuSpecCode());
|
|
|
+ wrapper.eq("ss", SkuSpec::getName, dto.getSkuSpecName());
|
|
|
+ wrapper.eq("bs", BomSpec::getWidth, dto.getWidth());
|
|
|
wrapper.eq("os", OrderSku::getStockPreparationStatus, StatusConstant.YES);
|
|
|
wrapper.orderByDesc("os", OrderSku::getStockPreparationTime);
|
|
|
wrapper.orderByAsc("os", OrderSku::getId);
|
|
@@ -195,25 +255,6 @@ public class StockPreparationServiceImpl implements StockPreparationService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- private IWrapper<StockPreparationVo> createWrapper(StockPreparationDto dto) {
|
|
|
- IWrapper<StockPreparationVo> wrapper = IWrapper.getWrapper();
|
|
|
-
|
|
|
- wrapper.eq("oi", OrderInfo::getCode, dto.getOrderCode());
|
|
|
- wrapper.eq("oi", OrderInfo::getWlnCode, dto.getOrderWlnCode());
|
|
|
-
|
|
|
- wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
|
|
|
- wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
|
|
|
-
|
|
|
- wrapper.eq("d", Department::getId, dto.getDepartmentId());
|
|
|
-
|
|
|
- wrapper.eq("ss", SkuSpec::getCode, dto.getSkuSpecCode());
|
|
|
- wrapper.eq("ss", SkuSpec::getName, dto.getSkuSpecName());
|
|
|
-
|
|
|
- wrapper.eq("bs", BomSpec::getWidth, dto.getWidth());
|
|
|
-
|
|
|
- return wrapper;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 订单状态改为 生产中
|
|
|
*/
|