|
@@ -15,12 +15,14 @@ import com.fjhx.wms.entity.arrival.po.ArrivalStockRecordsDetails;
|
|
|
import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
|
|
|
import com.fjhx.wms.entity.stock.dto.StockWaitDto;
|
|
|
import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
|
|
|
+import com.fjhx.wms.entity.stock.emums.JournalType;
|
|
|
import com.fjhx.wms.entity.stock.emums.StockWaitType;
|
|
|
import com.fjhx.wms.entity.stock.po.*;
|
|
|
import com.fjhx.wms.entity.stock.vo.StockWaitDetailsVo;
|
|
|
import com.fjhx.wms.entity.stock.vo.StockWaitVo;
|
|
|
import com.fjhx.wms.entity.warehouse.po.Warehouse;
|
|
|
import com.fjhx.wms.mapper.stock.StockWaitMapper;
|
|
|
+import com.fjhx.wms.service.WmsService;
|
|
|
import com.fjhx.wms.service.arrival.ArrivalStockRecordsDetailsService;
|
|
|
import com.fjhx.wms.service.arrival.ArrivalStockRecordsService;
|
|
|
import com.fjhx.wms.service.stock.*;
|
|
@@ -52,21 +54,25 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait> implements StockWaitService {
|
|
|
@Autowired
|
|
|
- ProductInfoService productInfoService;
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
@Autowired
|
|
|
- StockService stockService;
|
|
|
+ private StockService stockService;
|
|
|
@Autowired
|
|
|
- StockJournalService stockJournalService;
|
|
|
+ private StockJournalService stockJournalService;
|
|
|
@Autowired
|
|
|
- StockJournalDetailsService stockJournalDetailsService;
|
|
|
+ private StockJournalDetailsService stockJournalDetailsService;
|
|
|
@Autowired
|
|
|
- StockWaitDetailsService stockWaitDetailsService;
|
|
|
+ private StockWaitDetailsService stockWaitDetailsService;
|
|
|
@Autowired
|
|
|
- WarehouseService warehouseService;
|
|
|
+ private WarehouseService warehouseService;
|
|
|
@Autowired
|
|
|
- ArrivalStockRecordsService arrivalStockRecordsService;
|
|
|
+ private ArrivalStockRecordsService arrivalStockRecordsService;
|
|
|
@Autowired
|
|
|
- ArrivalStockRecordsDetailsService arrivalStockRecordsDetailsService;
|
|
|
+ private ArrivalStockRecordsDetailsService arrivalStockRecordsDetailsService;
|
|
|
+ @Autowired
|
|
|
+ private WmsService wmsService;
|
|
|
+ @Autowired
|
|
|
+ private StockFrozenService stockFrozenService;
|
|
|
|
|
|
@Override
|
|
|
public Page<StockWaitVo> getPage(StockWaitSelectDto dto) {
|
|
@@ -196,14 +202,14 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
|
|
|
public void addByWdly(StockWaitDto stockWaitDto) {
|
|
|
List<Stock> stockList = new ArrayList<>();
|
|
|
|
|
|
- List<StockWaitDetails> stockWaitDetailsList = stockWaitDto.getStockWaitDetailsList();
|
|
|
- List<Long> dids = stockWaitDetailsList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
|
|
|
- Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsList.stream().collect(Collectors.toMap(StockWaitDetails::getId, Function.identity()));
|
|
|
- List<StockWaitDetails> stockWaitDetails = stockWaitDetailsService.listByIds(dids);
|
|
|
+ List<StockWaitDetails> stockWaitDetailsDtoList = stockWaitDto.getStockWaitDetailsList();
|
|
|
+ List<Long> dids = stockWaitDetailsDtoList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
|
|
|
+ Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsDtoList.stream().collect(Collectors.toMap(StockWaitDetails::getId, Function.identity()));
|
|
|
+ List<StockWaitDetails> stockWaitDetailss = stockWaitDetailsService.listByIds(dids);
|
|
|
|
|
|
//已经完全入库数量统计
|
|
|
Integer statusFlag = 0;
|
|
|
- for (StockWaitDetails stockWaitDetail : stockWaitDetails) {
|
|
|
+ for (StockWaitDetails stockWaitDetail : stockWaitDetailss) {
|
|
|
StockWaitDetails temp = stockWaitDetailsMap.get(stockWaitDetail.getId());
|
|
|
//更新已入库数量
|
|
|
BigDecimal receiptQuantity = stockWaitDetail.getReceiptQuantity() == null ? BigDecimal.ZERO : stockWaitDetail.getReceiptQuantity();
|
|
@@ -219,17 +225,17 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
|
|
|
}
|
|
|
|
|
|
//操作库存
|
|
|
- for (StockWaitDetails waitDetails : stockWaitDetailsList) {
|
|
|
+ for (StockWaitDetails waitDetails : stockWaitDetailsDtoList) {
|
|
|
Stock stock = new Stock();
|
|
|
stock.setQuantity(waitDetails.getQuantity());
|
|
|
stock.setProductId(waitDetails.getProductId());
|
|
|
stockList.add(stock);
|
|
|
}
|
|
|
|
|
|
- stockWaitDetailsService.updateBatchById(stockWaitDetails);
|
|
|
+ stockWaitDetailsService.updateBatchById(stockWaitDetailss);
|
|
|
//修改待入库状态
|
|
|
StockWait stockWait = getById(stockWaitDto.getId());
|
|
|
- if (statusFlag == stockWaitDetails.size()) {
|
|
|
+ if (statusFlag == stockWaitDetailss.size()) {
|
|
|
stockWait.setStatus(2);//入库完成
|
|
|
} else {
|
|
|
stockWait.setStatus(1);//部分入库
|
|
@@ -241,9 +247,10 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
|
|
|
updateById(stockWait);
|
|
|
|
|
|
//创建出入库记录
|
|
|
+ Integer businessType = stockWaitDto.getBusinessType();
|
|
|
StockJournal stockJournal = new StockJournal();
|
|
|
stockJournal.setOpType(stockWaitDto.getType() == 1 ? 1 : 2);
|
|
|
- stockJournal.setType(stockWaitDto.getType() == 1 ? 4 : 5);
|
|
|
+ stockJournal.setType(getStockJournalType(businessType));
|
|
|
stockJournal.setCode(stockWait.getType() == 1 ? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
|
|
|
stockJournal.setWarehouseId(stockWaitDto.getWarehouseId());
|
|
|
stockJournal.setBusinessId(stockWaitDto.getId());
|
|
@@ -265,7 +272,7 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
|
|
|
arrivalStockRecordsService.save(arrivalStockRecords);
|
|
|
//创建入库明细
|
|
|
List<ArrivalStockRecordsDetails> arrivalStockRecordsDetailsList = new ArrayList<>();
|
|
|
- for (StockWaitDetails waitDetails : stockWaitDetailsList) {
|
|
|
+ for (StockWaitDetails waitDetails : stockWaitDetailsDtoList) {
|
|
|
ArrivalStockRecordsDetails arrivalStockRecordsDetails = new ArrivalStockRecordsDetails();
|
|
|
arrivalStockRecordsDetails.setArrivalStockRecordsId(arrivalStockRecords.getId());
|
|
|
arrivalStockRecordsDetails.setProductInfoId(waitDetails.getProductId());
|
|
@@ -275,6 +282,22 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
|
|
|
}
|
|
|
arrivalStockRecordsDetailsService.saveBatch(arrivalStockRecordsDetailsList);
|
|
|
}
|
|
|
+
|
|
|
+ //销售订单出库
|
|
|
+ if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
|
|
|
+ wmsService.outbounds(stockWaitDto);
|
|
|
+ }
|
|
|
+ //生产任务待出库
|
|
|
+ if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
|
|
|
+ for (StockWaitDetails stockWaitDetailsDto : stockWaitDetailsDtoList) {
|
|
|
+ StockWaitDetails stockWaitDetails = stockWaitDetailsMap.get(stockWaitDetailsDto.getId());
|
|
|
+ //减少冻结库存
|
|
|
+ StockFrozen stockFrozen = stockFrozenService.getOne(q -> q.eq(StockFrozen::getProductId, stockWaitDetails.getProductId()));
|
|
|
+ BigDecimal subtract = stockFrozen.getFrozenQuantity().subtract(stockWaitDetailsDto.getQuantity());
|
|
|
+ stockFrozen.setFrozenQuantity(subtract);
|
|
|
+ stockFrozenService.updateById(stockFrozen);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -287,4 +310,34 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
|
|
|
this.removeById(id);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据待出入库业务类型获取对应的出入库记录类型
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Integer getStockJournalType(int businessType) {
|
|
|
+ if (StockWaitType.BORDER_OF_LINE_IN.getDetailType().equals(businessType)) {
|
|
|
+ //线边回仓库
|
|
|
+ return JournalType.BORDER_OF_LINE_IN.getDetailType();
|
|
|
+ } else if (StockWaitType.COMPLETION_IN.getDetailType().equals(businessType)) {
|
|
|
+ //完工入库
|
|
|
+ return JournalType.COMPLETION_IN.getDetailType();
|
|
|
+ } else if (StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType().equals(businessType)) {
|
|
|
+ //采购到货
|
|
|
+ return JournalType.PURCHASE_ARRIVAL_IN.getDetailType();
|
|
|
+ } else if (StockWaitType.BACK_OUT.getDetailType().equals(businessType)) {
|
|
|
+ //退货出货
|
|
|
+ return JournalType.BACK_OUT.getDetailType();
|
|
|
+ } else if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
|
|
|
+ //销售订单出库
|
|
|
+ return JournalType.SALES_OUT.getDetailType();
|
|
|
+ } else if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
|
|
|
+ //生产任务待出库
|
|
|
+ return JournalType.PRODUCTION_TASK_OUT.getDetailType();
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("未知待出入库业务类型");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|