|
@@ -11,9 +11,16 @@ import com.ruoyi.common.constant.StatusConstant;
|
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.core.domain.BasePo;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.ruoyi.system.utils.UserUtil;
|
|
|
+import com.sd.business.entity.department.constant.DepartmentConstant;
|
|
|
import com.sd.business.entity.department.po.Department;
|
|
|
+import com.sd.business.entity.in.dto.InOutStorageDto;
|
|
|
+import com.sd.business.entity.in.emums.InDetailTypeEnum;
|
|
|
+import com.sd.business.entity.in.emums.InOutTypeEnum;
|
|
|
+import com.sd.business.entity.in.po.InOutStorageBom;
|
|
|
+import com.sd.business.entity.inventory.po.InventoryFinished;
|
|
|
import com.sd.business.entity.order.dto.OrderExchangeDto;
|
|
|
import com.sd.business.entity.order.dto.OrderExchangeSelectDto;
|
|
|
import com.sd.business.entity.order.enums.OrderClassifyEnum;
|
|
@@ -22,7 +29,11 @@ import com.sd.business.entity.order.po.*;
|
|
|
import com.sd.business.entity.order.vo.OrderExchangeDetailVo;
|
|
|
import com.sd.business.entity.order.vo.OrderExchangeVo;
|
|
|
import com.sd.business.entity.statement.dto.StatementOfAccountDto;
|
|
|
+import com.sd.business.entity.warehouse.constant.WarehouseConstant;
|
|
|
import com.sd.business.mapper.order.OrderExchangeMapper;
|
|
|
+import com.sd.business.service.in.InOutStorageService;
|
|
|
+import com.sd.business.service.inventory.InventoryFinishedOrderService;
|
|
|
+import com.sd.business.service.inventory.InventoryFinishedService;
|
|
|
import com.sd.business.service.order.*;
|
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
|
import com.sd.business.service.statement.StatementOfAccountService;
|
|
@@ -32,6 +43,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -64,6 +76,15 @@ public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, O
|
|
|
@Autowired
|
|
|
private StatementOfAccountService statementOfAccountService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private InOutStorageService inOutStorageService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InventoryFinishedService inventoryFinishedService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InventoryFinishedOrderService inventoryFinishedOrderService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<OrderExchangeVo> getPage(OrderExchangeSelectDto dto) {
|
|
|
IWrapper<OrderExchange> wrapper = getWrapper();
|
|
@@ -253,6 +274,46 @@ public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, O
|
|
|
statement.setDepartmentId(orderInfo.getDepartmentId());
|
|
|
statement.setOrderIdList(Collections.singletonList(orderInfo.getId()));
|
|
|
statementOfAccountService.add(statement);
|
|
|
+
|
|
|
+ // 售后商品入库
|
|
|
+ if (Objects.equals(orderExchangeDto.getWarehouseId(), WarehouseConstant.PRODUCTION_DEFECTIVE)) {
|
|
|
+ List<InOutStorageBom> tempInOutStorageBomList = orderSkuList.stream().map(item -> {
|
|
|
+ InOutStorageBom inStorageBom = new InOutStorageBom();
|
|
|
+ inStorageBom.setBomSpecId(item.getBomSpecId());
|
|
|
+ inStorageBom.setQuantity(item.getQuantity());
|
|
|
+ return inStorageBom;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 合并相同bom规格出库数量
|
|
|
+ List<InOutStorageBom> inOutStorageBomList = new ArrayList<>(tempInOutStorageBomList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ InOutStorageBom::getBomSpecId,
|
|
|
+ Function.identity(),
|
|
|
+ (v1, v2) -> {
|
|
|
+ v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
|
|
|
+ return v1;
|
|
|
+ })).values());
|
|
|
+
|
|
|
+ InOutStorageDto inOutStorageDto = new InOutStorageDto();
|
|
|
+ inOutStorageDto.setType(InOutTypeEnum.IN.getKey());
|
|
|
+ inOutStorageDto.setDetailType(InDetailTypeEnum.ABANDON.getKey());
|
|
|
+ inOutStorageDto.setWarehouseId(orderExchangeDto.getWarehouseId());
|
|
|
+ inOutStorageDto.setDepartmentId(DepartmentConstant.SD_SPORTS);
|
|
|
+ inOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
|
|
|
+ inOutStorageDto.setRemark("订单:" + orderInfo.getCode() + "订单售后报废入库");
|
|
|
+ inOutStorageDto.setInOutStorageBomList(inOutStorageBomList);
|
|
|
+ inOutStorageService.add(inOutStorageDto);
|
|
|
+ } else {
|
|
|
+ // 生成无源成品信息,入成品库
|
|
|
+ List<InventoryFinished> inventoryFinishedList = orderSkuList.stream().map(item -> {
|
|
|
+ InventoryFinished inventoryFinished = new InventoryFinished();
|
|
|
+ inventoryFinished.setSkuSpecId(item.getSkuSpecId());
|
|
|
+ inventoryFinished.setQuantity(item.getQuantity());
|
|
|
+ return inventoryFinished;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ inventoryFinishedService.inOut(inventoryFinishedList, true);
|
|
|
+ inventoryFinishedOrderService.orderExchangeWarehousing(orderSkuList);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|