| | |
| | | if (flag) { |
| | | bo.setId(add.getId()); |
| | | } |
| | | //入库+库存 出库-库存 (默认入库) |
| | | int OperationType; |
| | | |
| | | //出库 |
| | | if(bo.getType().equals(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK)){ |
| | | OperationType = -1; |
| | | } else { |
| | | OperationType = 1; |
| | | } |
| | | // 入库+库存 出库-库存 (默认入库) |
| | | int OperationType = bo.getType().equals(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK) ? -1 : 1; |
| | | |
| | | List<EimsSpareBo> spareList = Optional.ofNullable(bo.getSpareList()).orElse(new ArrayList<>()); |
| | | // 插入出库明细 |
| | | List<EimsSpareInoutdt> dtList = spareList.stream() |
| | | .map(eimsSpareBo -> { |
| | | EimsSpareInoutdt dt = new EimsSpareInoutdt(); |
| | | dt.setInoutId(add.getId()); |
| | | dt.setSpareId(eimsSpareBo.getId()); |
| | | dt.setBeforeStock(eimsSpareBo.getActualStock()); |
| | | // 注意入库出库 |
| | | dt.setActualStock(eimsSpareBo.getActualStock() + (eimsSpareBo.getQuantity() * OperationType)); |
| | | dt.setQuantity(eimsSpareBo.getQuantity()); |
| | | |
| | | // 设置单价和金额 |
| | | Optional.ofNullable(eimsSpareBo.getReferPrice()).ifPresent(referPrice -> { |
| | | dt.setUnitPrice(referPrice); |
| | | dt.setAmount(referPrice.multiply(BigDecimal.valueOf(eimsSpareBo.getQuantity()))); |
| | | }); |
| | | // 合并两次循环为一次循环 |
| | | List<EimsSpareInoutdt> dtList = new ArrayList<>(); |
| | | List<EimsSpare> updateSpareList = new ArrayList<>(); |
| | | |
| | | return dt; |
| | | }) |
| | | .toList(); |
| | | for (EimsSpareBo eimsSpareBo : spareList) { |
| | | EimsSpare spare = spareMapper.selectById(eimsSpareBo.getId()); |
| | | if (spare == null) { |
| | | spare = new EimsSpare(); |
| | | spare.setName(eimsSpareBo.getName()); |
| | | spare.setCode(eimsSpareBo.getCode()); |
| | | spare.setActualStock(100L); |
| | | spareMapper.insert(spare); |
| | | eimsSpareBo.setId(spare.getId()); |
| | | } |
| | | |
| | | // 插入出库明细 |
| | | EimsSpareInoutdt dt = new EimsSpareInoutdt(); |
| | | dt.setInoutId(add.getId()); |
| | | dt.setSpareId(spare.getId()); |
| | | dt.setBeforeStock(spare.getActualStock()); |
| | | dt.setActualStock(spare.getActualStock() + (eimsSpareBo.getQuantity() * OperationType)); |
| | | dt.setQuantity(eimsSpareBo.getQuantity()); |
| | | |
| | | // 设置单价和金额 |
| | | Optional.ofNullable(spare.getReferPrice()).ifPresent(referPrice -> { |
| | | dt.setUnitPrice(referPrice); |
| | | dt.setAmount(referPrice.multiply(BigDecimal.valueOf(eimsSpareBo.getQuantity()))); |
| | | }); |
| | | dtList.add(dt); |
| | | |
| | | // 更新备件库存 |
| | | EimsSpare updatedSpare = new EimsSpare(); |
| | | updatedSpare.setId(spare.getId()); |
| | | updatedSpare.setActualStock(spare.getActualStock() + (eimsSpareBo.getQuantity() * OperationType)); |
| | | Optional.ofNullable(spare.getReferPrice()).ifPresent(referPrice -> { |
| | | updatedSpare.setStockAmount(referPrice.multiply(BigDecimal.valueOf(updatedSpare.getActualStock()))); |
| | | }); |
| | | updateSpareList.add(updatedSpare); |
| | | } |
| | | |
| | | // 批量插入数据 |
| | | if (!dtList.isEmpty()) { |
| | | inoutdtMapper.insertBatch(dtList); |
| | | } |
| | | |
| | | // 更新备件的库存 |
| | | List<EimsSpare> updateSpareList = spareList.stream().map(spareBo -> { |
| | | EimsSpare spare = new EimsSpare(); |
| | | spare.setId(spareBo.getId()); |
| | | spare.setActualStock(spareBo.getActualStock() + (spareBo.getQuantity() * OperationType)); |
| | | // 设置单价和金额 |
| | | Optional.ofNullable(spareBo.getReferPrice()).ifPresent(referPrice -> { |
| | | spare.setStockAmount(referPrice.multiply(BigDecimal.valueOf(spare.getActualStock()))); |
| | | }); |
| | | return spare; |
| | | }).toList(); |
| | | |
| | | // 批量更新备件库存 |
| | | if (!updateSpareList.isEmpty()) { |
| | | spareMapper.updateBatchById(updateSpareList); |
| | | } |
| | | |
| | | return flag; |
| | | } |
| | | |